Sonarqube - công cụ phát hiện lỗi bảo mật code cho Website

Thảo luận trong 'Audit/Pentest Security' bắt đầu bởi Sugi_b3o, 13/04/21, 11:04 PM.

  1. Sugi_b3o

    Sugi_b3o Moderator Thành viên BQT

    Tham gia: 30/08/16, 10:08 AM
    Bài viết: 399
    Đã được thích: 299
    Điểm thành tích:
    63
    SonarQube là một nền tảng mã nguồn mở được phát triển bởi SonarSource để liên tục kiểm tra chất lượng code, review tự động với việc phân tích code để phát hiện lỗi, đoạn code không tốt, hoặc lỗ hổng bảo mật trên 20 ngôn ngữ lập trình.

    Sonarqube hiện hỗ trợ các ngôn ngữ lập trình sau: Java (including Android), C#, PHP, JavaScript, C/C++, COBOL, PL/SQL, PL/I, ABAP, VB.NET, VB6, Python, RPG, Flex, Objective-C, Swift, Web and XML.

    Nó được tích hợp vào công cụ phát triển Eclipse, Visual Studio, IntelliJ IDEA thông qua plugin SonarLint và tích hợp với các công cụ khác như LDAP, Active Directory, GitHub….
    -----------------------------------------------------------------------------------------------------

    Kiểm tra và cấu hình trước khi cài đặt trên Linux

    Mã:
    vi /etc/sysctl.conf
    vm.max_map_count=262144
    [​IMG]

    Mã:
    vi /etc/security/limits.conf
    
    * soft     nproc          8192
    
    * hard     nproc          8192
    
    * soft     nofile         65536
    
    * hard     nofile         65536
    (Yêu cầu restart sau khi cấu hình)

    [​IMG]

    Kiểm tra seccomp

    $ grep SECCOMP /boot/config-$(uname -r)

    Kết quả trả về mong muốn

    [​IMG]

    Cài đặt các gói yêu cầu:
    Java11:
    Mã:
    curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
    tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
    sudo mv jdk-11.0.2/ /usr/local/
    sudo vim /etc/profile.d/jdk11.sh
    export JAVA_HOME=/usr/local/jdk-11.0.2
    export PATH=$PATH:$JAVA_HOME/bin
    source /etc/profile.d/jdk11.sh
    Kiểm tra version sau khi đã cài xong

    [​IMG]

    Postgresql10:
    Mã:
    yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-libs-10.7-2PGDG.rhel7.x86_64.rpm
    yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-10.7-2PGDG.rhel7.x86_64.rpm
    yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-server-10.7-2PGDG.rhel7.x86_64.rpm
    Kiểm tra version
    [​IMG]

    sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
    Chỉnh file pg_hba
    Mã:
    sudo nano /var/lib/pgsql/10/data/pg_hba.conf
    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    # "local" is for Unix domain socket connections only
    local   all             all                                     trust
    # IPv4 local connections:
    host    all             all             127.0.0.1/32    md5
    # IPv6 local connections:
    host    all             all             ::1/128             md5
    [​IMG]

    Khởi động postgreasql
    Mã:
    sudo systemctl start postgresql-10
    sudo systemctl enable postgresql-10
    Kiểm tra postgreasql

    sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"

    Tạo user postgres

    Mã:
    sudo passwd postgres
    
    su - postgres
    
    createuser sonar;
    
    psql
    
    ALTER USER sonar WITH ENCRYPTED password '[email protected]';
    
    CREATE DATABASE sonar OWNER sonar;
    
    \q
    
    exit
    Tải ứng dụng

    Mã:
    wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.0.zip
    
    sudo unzip sonarqube-8.0.zip -d /opt
    
    sudo mv /opt/sonarqube-8.0 /opt/sonarqube
    
    sudo useradd sonar
    
    sudo chown -R sonar:sonar /opt/sonarqube

    Chỉnh cấu hình để kết nối db, port, webservice

    Mã:
    sudo vi /opt/sonarqube/conf/sonar.properties
    
    sonar.jdbc.username=sonar                                                                                                                  
    
    [email protected]
    
    sonar.jdbc.url=jdbc:postgresql://localhost/sonar
    
    sonar.web.host=0.0.0.0
    Chỉnh cấu hình service

    sudo vi /etc/systemd/system/sonarqube.service

    [​IMG]


    Mã:
    [Unit]
    
    Description=SonarQube service
    
    After=syslog.target network.target
    
    
    [Service]
    
    Type=simple
    
    User=sonarqube
    
    Group=sonarqube
    
    PermissionsStartOnly=true
    
    ExecStart=/bin/nohup /opt/java/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.0.jar
    
    StandardOutput=syslog
    
    LimitNOFILE=65536
    
    LimitNPROC=8192
    
    TimeoutStartSec=5
    
    Restart=always
    
    SuccessExitStatus=143
    
    
    [Install]
    
    WantedBy=multi-user.target

    Run


    Mã:
    /opt/sonarqube/bin/linux-x86-64/sonar.sh start
    
     /opt/sonarqube/bin/linux-x86-64/sonar.sh status
    
     /opt/sonarqube/bin/linux-x86-64/sonar.sh restart

    Check service

    sudo systemctl status sonarqube

    Let’s scan

    Hướng dẫn sử dụng SonarQube
    Bước 1: Click vào “Login” và sử dụng tài khoản mặc định “admin” với password “admin” để đăng nhập

    [​IMG]

    Bước 2: Điền tên của Project của bạn để tạo token

    [​IMG]

    Bước 3: Chọn ngôn ngữ chính cho Project của bạn

    [​IMG]

    Bước 4: Thực hiện theo thứ tự:

    – Chọn hệ điều hành
    – Định nghĩa 1 project key
    – Download Scanner tool.

    [​IMG]
    Ví dụ: Git clone 1 dự án có mã nguồn mở tại đây
    Các bạn cấu hình file sonar-project.properties
    Mã:
    sonar.projectKey=org.sonarqube:sonarqube-scanner
    sonar.projectName=Example of SonarQube Scanner Usage
    sonar.projectVersion=1.0
    
    sonar.sources=src,copybooks
    
    sonar.sourceEncoding=UTF-8
    
    ## Cobol Specific Properties
    
    # comma-separated paths to directories with copybooks
    sonar.cobol.copy.directories=copybooks
    # comma-separated list of suffixes
    sonar.cobol.file.suffixes=cbl,cpy
    sonar.cobol.copy.suffixes=cpy
    
    
    
    ## Flex Specific Properties
    
    # retrieve code coverage data from the Cobertura report
    sonar.flex.cobertura.reportPath=coverage-report/coverage-cobertua-flex.xml
    
    
    
    # PL/I Specific Properties
    sonar.pli.marginLeft=2
    sonar.pli.marginRight=0
    Sau khi config xong bạn tải file sonar-scanner về và chạy lệnh scan như ví dụ bên dưới
    upload_2021-4-13_22-59-47.png
    Sau khi scan xong, về lại trang chủ để xem report project của các bạn
    [​IMG]
    Hướng dẫn cài đặt Sonarque trên docker
    Pull docker & tạo file cấu hình
    Mã:
    docker pull sonarqube
    Mã:
    $ docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
    
    Sau đó chạy lệnh
    Mã:
    $ docker run -d --name sonarqube \
    -p 9000:9000 -p 9092:9092 \
    -e SONARQUBE_JDBC_USERNAME=sonar \
    -e SONARQUBE_JDBC_PASSWORD=sonar \
    -e SONARQUBE_JDBC_URL=jdbc:postgresql://localhost/sonar \
    sonarqube
    
    Khởi động với lệnh
    Mã:
    $ docker start sonarqube
    Hướng dẫn cài đặt trên Windows

    BƯỚC 1: CÀI ĐẶT JDK 11
    • Tải JDK 11 và cài đặt vào ổ C:Java
    • Mở Control Panel, chọn Advanced System Settings
    • Set JAVA_HOME: đường dẫn cài đặt JDK
    [​IMG]

    • Set Path: đường dẫn chứa thư mục bin của JDK
    [​IMG]

    BƯỚC 2: TẢI CÁC PACKAGE
    [​IMG]

    [​IMG]

    Các bạn giải nén tất cả và đổi tên thư mục thành sonarqube và sonar-scanner.
    Copy tất cả các thư mục trên vào Program Files của ổ C.
    BƯỚC 3: START SERVER CỦA SONARQUBE
    Mở file sonar.properties tại C:program Filessonarqubeconf. Bỏ comment lệnh #sonar.search.port=9001 và đổi lại thành sonar.search.port=0
    Vào trong thư mục C:program Filessonarqubebinwindows-x86-64, tìm và chạy file StartSonar.bat để bật server sonarqube lên. Sau khi chạy thành công thì vẫn để cửa sổ chứ không được tắt.
    Thấy dòng chữ SonarQube is up là thành công.
    [​IMG]

    Tham khảo Vinahost
     
    Chỉnh sửa cuối: 18/04/21, 09:04 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. tuantran

    tuantran Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 34
    Đã được thích: 18
    Điểm thành tích:
    8
    Bạn cóhướng dẫn sử dụng sonarqube vs docker không ạ?
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. Sugi_b3o

    Sugi_b3o Moderator Thành viên BQT

    Tham gia: 30/08/16, 10:08 AM
    Bài viết: 399
    Đã được thích: 299
    Điểm thành tích:
    63
    Mình đã cập nhật lên bài viết rồi nhé
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    WhiteHat News #ID:2018 thích bài này.
  4. bobby13689

    bobby13689 Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 36
    Đã được thích: 41
    Điểm thành tích:
    18
    Đợt tới làm một bài về viết custom rules cho SonarQube đi mod.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. tuantran

    tuantran Moderator Thành viên BQT

    Tham gia: 27/04/17, 09:04 AM
    Bài viết: 34
    Đã được thích: 18
    Điểm thành tích:
    8
    ở đây sao lại mở 2 port bạn nhỉ
    ```
    $ docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
    ```
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  6. Sugi_b3o

    Sugi_b3o Moderator Thành viên BQT

    Tham gia: 30/08/16, 10:08 AM
    Bài viết: 399
    Đã được thích: 299
    Điểm thành tích:
    63
    Port 9092 để run services Embedded Database nha
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan