Evil-404

专注于 APT 攻防研究,致力于高质量实用干货分享


  • 首页

  • 导航

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索

快速搜集目标的各类web管理入口,敏感目录,文件及错误配置

发表于 2014-12-16 | 更新于: 2017-10-20 | 分类于 dirscan
字数统计: 1,739 | 阅读时长 ≈ 6



0x01 下面是自己找网站后台的一些常规办法[注意,对于找后台主要都是针对一些非开源web程序,如果是开源程序,直接把代码down下来看下目录结构,不就什么都有了,何苦找呢]:

1
2
3
4
5
6
7
8
9
10
11
首先,看看目标站自己的前端页面上,有没有给我们提供后台入口,很多脑残的政府和学校站很可能都会这么干,直接把后台入口丢在前端页面上,你方便,别人也方便
尝试访问目标的robots.txt文件,如果有的话,看看里面有没有后台或者上传点之类的敏感目录,至于robots.txt文件本身的作用,大家请自行谷歌,这里就不多做解释了
习惯性的盲打一些常见的后台目录名,如:/admin/,/manage/,/cms/,/system/,/administrator/,/wp-login.php,/control/等,记得大小写变换下多试几个……
使用各类基于字典的目录爆破及爬行工具,如:dirb,wwwscan,cansina,uniscan,破壳以及其它的各种py脚本,非常多,现在也有很多在线的目录爆破工具站,这类的工具其实并没什么太多的技术含量,实际效果还得取决于你的字典质量和目标的防护程度,抛开防护先不说,起码网站敏感目录文件字典要好好花点儿时间精心准备
"cscan"谷歌浏览器小插件,速度快,误报极高,具体原理,本人暂时还没弄明白,不过可以尝试下,自己用的比较少,记得有一次实在没办法就就抱着侥幸试了一下,结果真就跑出来了,可能是运气吧
对于大型站点,可利用之前提到的google hacking,这里就不细说了,请仔细看前面的说明
用各种wvs爬,也许也能爬出来一些,关于这类web漏洞扫描器的具体使用,后面会有详细说明,这里就先不细说了,例如: awvs,appscan,netsparker……
如果是windows的话,不妨尝试下短文件漏洞扫描工具,鸡肋的是,它只能扫出前6个字节(6个英文字符),也就是说你只能看一部分猜一部分,好处在于前6个字节起码是绝对正确的
配合网站的域名或者业务社工,比如:商城站一般我们会想到什么呢,shop?,有的后台目录也可能是依据目标域名的各种变形,多尝试……
尝试各种万能密码,虽然很low,但很直接,存在万能密码问题的程序毕竟也不在少数,如:phpmyadmin 2.11.3-2.11.4 等……
如果实在找不到,就想想办法直接问管理员吧,至于套不套的出来,就要看你自己的本事了,嘿嘿……

0x02 除了一些常规网站后台入口,我们也可以尝试各种java web入口,尤其是针对各种java控制台的,当然,前提是目标要有,基本进去后,shell权限都非常大:

1
2
3
4
5
6
tomcat[默认端口8080 需要用户名密码,还是那句话多尝试些弱口令,进去以后上传war马]
jboss [默认端口8080无需任何验证,进去以后上传war马]
weblogic [默认端口7001,实际很多是在8080上,进去以后上传war马]
Websphere[默认端口9043,实际很多是在8080上,进去以后上传war马]
webmin[web版的服务器管理工具,默认端口10000,可以把它当做图形版的ssh管理工具]
……

0x03 查找其它的各类敏感文件目录,自己所说的敏感文件及目录一般包括如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
网站源码备份文件,数据库备份文件,配置文件备份等...一般命名都是类似wwwroot.zip,wwwroot.sql这种的,建议直接用专门的备份的字典跑
目标服务器的各种探针类文件,例如:phpinfo.php,test.asp,info.aspx……
目标网站的物理路径,注意物理路径和网站路径的区别,网站路径都是以www为根目录,而物理路径则是指系统某个分区下的绝对路径,如:c:\windows\system32 /usr/local/lib
网站后台目录,上传目录,如: 各类上传点,各类漏洞编辑器中的敏感路径
网站数据库连接配置类文件
各类数据库的web管理入口,例如:phpmyadmin,adminer……之流
目标网站后台脚本源码泄露及各种各样的网站报错信息
svn 文件泄露如,.svn,用户命令历史文件泄露,如,.history...
其它各种第三方服务的核心配置文件,里面可能会有用户密码……例如:cisco vpn,ser-u……
目标内部的各种账号密码信息,并不仅限于邮箱,vpn,ftp……
web服务器配置错误所导致的目录遍历
别人的webshell,目录扫描工具对这个的扫描似乎不太靠谱,因为有些shell隐藏的比较深,所以还是建议直接用google爬各种webshell特征
……

0x04 另外,还有一些目标内部的OA系统入口,不过这些通常都不在常规的web端口上,又该怎么办呢,其实,很多情况下,你可以习惯性的尝试访问以下目标的81,82,83,86,88,8081,8082,8088这样的web端口,说不定就会有惊喜:

1
2
3
在目标防火墙没有开启的情况下,可以用一些之前介绍过的公网端口扫描工具,进行全端口扫描,然后根据扫到的结果,看着可能是web端口的,再尝试在浏览器中逐个访问
如果目标开起了防火墙[waf],除了谷歌,或者直接在目标网站上找找,基本也就没谁了,扫可能是不太现实的,嘿嘿……如果大家有更好的思路也期待能一起交流
……

0x05 搜集目标的各种元数据,如果能搜集到一些有用的账号密码,自然是最好不过了

1
foca 工具除了挖掘各种元数据之外,包括目标子域识别,服务器错误配置,web高危扫描……功能还是非常好用的,尤其是针对大中型站点,效果相对比较明显



小结:
    对于后台查找自己知道的基本也就这么多了,如果实在找不到,不妨换换别的思路,web只是我们渗透过程中的其中一个入手点,却不是唯一的入手点,别太死板就行,更多手法,也期待能和大家一起交流学习


熟练利用 shodan hacking 辅助我们快速渗透[ 大中型目标 ]

发表于 2014-12-15 | 更新于: 2017-10-10 | 分类于 shodan hacking
字数统计: 2,530 | 阅读时长 ≈ 10



0x01 shodan 是什么 :

1
2
3
4
5
6
7
同样是搜索引擎,但它并不像谷歌,bing...那样,只单单针对web 中的各类html数据进行爬取
shodan 是基于各类在线网络设备的旗标的全网搜索
如,各类边界网络摄像头,路由器,交换机... ,中间件服务[如,各类web服务器,数据库,分布式中间件,文件共享服务等...]
默认只能看到一部分搜索结果,具体是多少条已经忘记了
可能需要付点费才能看到更多的搜索结果,同样它也提供查询api,这就非常方便按照我们自己的扫描需求定制脚本
在渗透一些特定的网络设备或者自己手握0day批量打的时候还是非常好使的,俗称"工控设备渗透"
...

0x02 那,我们到底可以用它来干些什么呢

1
2
3
4
5
6
利用0day实施大规模批量入侵,前提是不要把自己的0day撞到别人的蜜罐里面去了,否则就可惜了
全网批量统计所有感染有某一数据特征的后门,可以专门用来检测某种定向攻击
批量扫描各种中间件的高危错误配置及能被远程利用的各类已知漏洞,也就是说完全可以把它当成一个高级的漏洞扫描器来用
批量探测各种弱口令
批量抓各种shell [ 不仅限于webshell,backdoor ... ]等……
...

0x03 关于shodan本身的更多详情,请直接参考其官方站点 [注册个账号是必须的]:

1
https://www.shodan.io/

0x04 跟google hacking一样,shodan也有一套属于自己的语法规则,下面是shodan 内置的几个简单过滤器:

1
2
3
4
5
6
7
8
city:   	城市,貌似只支持英文,而且不是能是简称,如,TOKYO,Hong Kong,Seoul...
country: 指定国家或地区后缀,比如:cn,us,jp,tw,br,ph,vn,hk...
hostname: 指定主机名,其实就是目标域名[域名如果是子域还需要在前面加个.]
net: 指定网络范围,可以是单个ip或者cidr格式的ip段
os : 指定操作系统 centOS,win32,red hat,suse 等...
port: 指定端口,HTTP (80),FTP (21),SSH (22),SNMP (161),SIP (5060)等...
product: 指定具体的产品名称,如,各类web服务器,数据库服务器,网络设备名称等...
...

0x05 下面是一些简单的搜索实例:

1
2
3
4
5
6
7
8
9
搜集某个城市的特定设备 [这里暂以不同类型的web服务器为例] 标识 [自己可以事先多收集一些常见的软件和设备标识]:
Microsoft-IIS/5.0 city:"TOKYO" 可逐个尝试能否直接写shell
Microsoft-IIS/6.0 city:"Seoul" 可逐个尝试能否直接 RCE
Microsoft-IIS/7.5 city:"Hong Kong"
apache city:"Nagoya"
Apache/2.2.27 city:"Nagoya"
Tomcat city:"Seoul" 可逐个尝试能否直接 RCE
cisco city:"Osaka"
tplink city:"nanjing"


1
2
3
4
5
6
搜索特定版本的操作系统及端口:
os:"linux" net:"72.34.62.0/24"
os:"windows" net:"195.40.91.0/24"
Apache city:"Hong Kong" port:"8080" product:"Apache Tomcat/Coyote JSP engine"
Apache city:"Seoul" port:"8080"
hostname:".polyu.edu.hk" os:"windows"


1
2
3
4
5
6
搜索指定国家地域特定类型的工具服务 (还是那句话,多搜集一些高质量的工具banner):
product:"tomcat" net:"158.132.18.0/24"
product:"apache" net:"158.132.18.0/24"
product:"iis" net:"158.132.18.0/24"
port:"8080" jboss country:CN
port:"8080" jboss country:IN


1
2
3
4
5
6
扫描指定网段内的所有特定数据库服务器:
product:"Mysql" net:"140.117.13.0/24" port:"3306"
port:"1433" net:"78.131.197.0/24"
port:"5432" net:"77.55.149.0/24"
port:"1521" net:"78.143.192.0/12"
port:"1521" city:"Osaka"


1
2
3
4
5
搜索特定远程管理终端端口:
os:"windows" port:"3389" net:"107.160.1.0/24"
os:"linux" port:"22" net:"107.160.1.0/24"
os:"linux" port:"23" net:"107.160.1.0/24"
os:"linux" port:"23" net:"87.124.0.0/15"


1
搜各类路由的特定web管理端口:
1
2
3
搜索ftp / tftp :
port:"21" net:"107.160.1.0/24"
port:"69" net:"218.242.16.0/24"
1
2
3
4
5
6
7
8
9
10
在某个城市中搜索指定的端口,操作系统及在线网络设备:
city:"Hong Kong" port:"69"
city:"Hong Kong" port:"3389"
city:"Hong Kong" port:"22"
city:"Hong Kong" port:"23"
city:"Hong Kong" port:"3306"
city:"Hong Kong" port:"110"
city:"Hong Kong" os:"windows"
city:"Hong Kong" product:"cisco"
city:"Hong Kong" port:"8080"


1
2
3
4
5
6
7
8
9
10
11
搜索指定国家的特定设备,端口,服务器:
port:"23" country:CN
port:"1433" country:CN
port:"3389" country:CN
tplink country:CN
huawei country:CN
netcam country:CN
country:CN net:"115.225.113.0/24" port:"22"
country:CN router
admin login country:HK
hacked by country:HK


1
2
3
搜缺省密码:
"default password" city:"Hong Kong"
country:CN "default password"
1
2
搜exp[其实,就是把exploit上的东西扒下来]:
https://exploits.shodan.io/welcome
1
2
搜索各类漏洞摄像头:
netcam net:"187.189.82.0/24"
1
批量搜集一些开源web程序,尝试0day批量利用:
1
针对某个端口,批量搜集感染了某种数据标志的木马:
1
批量搜集一些经典漏洞尝试利用,比如:iis,tomcat,jboss... RCE,心脏滴血,bash远程执行,等等……:

0x06 下面是一些常见的默认用户名密码,可以尝试撞撞运气:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ACTi: admin/123456 or Admin/123456
Axis (traditional): root/pass,
Axis (new): requires password creation during first login
Cisco: No default password, requires creation during first login
Grandstream: admin/admin
IQinVision: root/system
Mobotix: admin/meinsm
Panasonic: admin/12345
Samsung Electronics: root/root or admin/4321
Samsung Techwin (old): admin/1111111
Samsung Techwin (new): admin/4321
Sony: admin/admin
TRENDnet: admin/admin
Toshiba: root/ikwd
Vivotek: root/<blank>
WebcamXP: admin/ <blank>

1
2
3
4
5
关于shodan 的入门用法到这里基本就差不多了,建议大家如果真的想用好,可以付点费自己写脚本,当然,你也可以直接用别人提供好的py shodan库
国内利用此api衍生出来的工具还是蛮多的,这里就不一一细说了
总之来讲,批量抓shell效果还是非常不错的
从上面我们也不难发现,利用的核心还是各种特征 [banner] 质量加上你自己的想象力,因为它直接决定了你的命中率
...

0x07 另外,再介绍两个国内的小工具站,使用非常简单,纯图形化的,这里就不细说了:

1
2
3
https://www.punkspider.org/   在线web漏洞扫描
http://ics.zoomeye.org/ 基于shodan实现
...

0x08 最后再提下bing(目前已经费掉了,很多人的C段旁站工具想必都是基于此api写的),下面是常见使用方法:

1
ip:ip地址    它就会把这个ip所对应的所有域名都列出来

0x09 基于此api的各种C段旁站工具编写原理:

1
2
3
4
编写过程其实也很简单,就是把bing搜索的结果格式化截取输出一下
不过,在此之前你需要事先去bing申请一下搜索用的api
去微软的开发者中心申请一个即可
如果旁站能想通,那么C段也只不过是把254台机器在线的ip又轮训一遍而已,我想你应该懂了


0x10 一点小结:
    关于google和shodan的用法,大概就介绍到这里了,使用都比较简单,基本就是几个过滤器来回的组装,随意的根据自己的实际需求拼装特征,说道底,还是看大家的想象力和对现有信息特征的敏感度,大家也看到了,如果完全手工的话,确实挺累的,为什么不写成自动化的脚本来帮我们完成呢,当然,这类的工具也有很多现成的,不过并不是按照咱们的想法来的,所以,最好自己动手……不过在写脚本之前,自己首先要能熟练使用才是,这样写出来的工具杀伤力才能更大些,当然,关于这类web搜索引擎所能产生的渗透效果的强弱,主要是还是看搜索引擎对目标收录的多少,如果目标站点建立的时间比较长,而且各大搜索引擎的收录量也比较好的话,这时候你利用谷歌固然成效显著,但如果一个站点刚建立不久,谷歌收录量也非常少,这时谷歌对你来讲也许就只是个摆设,这里说到的内容可能还只是各个搜索引擎利用的冰山一角,更多更强大的功能,还要靠大家一起来慢慢挖掘,对了,最后再说明一点,用这些搜索引擎的时候,最好全程挂上vpn,推荐美国的,原因大家应该都明白,自家人对自家人的限制几乎是最少的,不要问我为什么不介绍百度没办法,太不堪(原因大家都懂……)



0x10 一点心得:
    一般我们在搜索引擎上搜集目标信息的时候,首先,应该直奔一些比较高危的漏洞特征,比如能快速getshell的,比如,默认账号密码,进去以后就只可以直接传shell的,此外,如果目标有支持jsp脚本的机器,我们首先就应该从jsp开始入手,因为jsp程序的权限一般都非常高,几乎是服务器的管理员权限,所以我们平时在搜集信息过程中,也尽量先找一些最好能直取权限的信息,孰轻孰重,自己心里一定要有分寸,这样可以避免我们做太多的无用功,当然,如果你手上有个开源的web程序未公开的0day,然后配合类似的搜索引擎利用,那结果可想而知,反正我们利用各种搜索引擎的最终目的无非就是想尽快找个目标边界先进去……

熟练利用google hacking来辅助我们快速渗透

发表于 2014-12-14 | 更新于: 2017-11-21 | 分类于 google hacking
字数统计: 4,450 | 阅读时长 ≈ 21



0x01 google hacking 几个基础过滤器用途简介[说在前面的话,过滤器是死的人是活的,实际用的时候把脑洞放开,尽你所能拼装,才有可能达到超预期效果]:

1
2
3
4
5
6
7
intitle:     从网页标题中搜索指定的关键字,可专门用来搜索指定版本名称的各类web程序,也可用allintitle
inurl: 从url中搜索指定的关键字,可专门用来构造各种形式的漏洞url,也可用allinurl
intext: 从网页中搜索指定的关键字,经常会用它来穿透到漏洞页面……也可用allintext
filetype: 搜索指定的文件后缀,例如:sql mdb txt bak backup ini zip rar doc xls……
site: 在某个特定的网站内中搜索指定的内容
link: 搜索和该链接有关联的链接,比如:友情链接
index of: 找目录遍历时也许会用到

0x02 google hacking所支持的一些通配符(建议选择性的用,因为越精确,也意味着能搜到的结果越少,这样容易漏掉一些有价值的目标,我们最终目的还是希望能尽快找到有漏洞的站先进去再说):

1
2
3
4
5
6
+   强制包含某个字符进行查询
- 查询的时候忽略某个字符
"" 查询的时候精确匹配双引号内的字符
. 匹配某单个字符进行查询
* 匹配任意字符进行查询
| 或者,多个选择,只要有一个关键字匹配上即可

0x03 找各种web入口,当然,这里所指的web入口并非仅限于各种常规网站后台[说到网站后台,一定要手工多尝试几个路径,实在猜不到,再用字典跑,节省时间]:

1
2
如一些疑似目标内网的各种web管理系统入口,web端的数据库管理入口,某些设备的web端配置入口,以及一些常见的java控制台入口等等...
反正只要你觉得进去以后能上传脚本的地方全部都可以尝试,东西在你手里,可劲儿用就是了

搜集各版本tomcat入口[默认在8080端口上]:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat 		直接这样搜结果肯定会非常多
intext:$CATALINA_HOME/webapps/ROOT/ inurl:8080/ 我们可以带指定端口号去搜,因为有些web并非在默认端口上,这样搜的话,可以尽量防止有漏网之鱼
intext:$CATALINA_HOME/webapps/ROOT/ intitle:Apache Tomcat/5.5.27 site:*.hk 针对特定版本特定国家去搜,比如爆出某个版本有远程执行类的漏洞就可以利用这种方式来批量进行
intext:$CATALINA_HOME/webapps/ROOT/ intitle:Apache Tomcat/7.0.32 site:*.gov.br
intext:$CATALINA_HOME/webapps/ROOT/ intitle:Apache Tomcat/5.0.12 site:*.cn
intext:$CATALINA_HOME/webapps/ROOT/ intitle:Apache Tomcat/6.0.24 site:*.com
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:*.edu.*
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:*.gov.* 搜特定类型的目标站点,如,学校一般都是edu,各种民间组织一般都是org,政府机构一般都是gov……
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:*.org.*
intext:$CATALINA_HOME/webapps/ROOT/ intitle:Apache Tomcat/7.0 site:*.org.*
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:*.jp
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:*.vn
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:*.ph
intext:$CATALINA_HOME/webapps/ROOT/ intitle:Apache Tomcat site:*.uk
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:baidu.com 无意发现百度的某个子域,竟然是个博彩站
intext:$CATALINA_HOME/webapps/ROOT/ intitle:apache tomcat site:org.tw


搜集weblogic入口:

1
2
3
inurl:/console/login/LoginForm.jsp  	这样范围太大,可根据上面的示例随意变形
inurl:/console/login/LoginForm.jsp intitle:Oracle WebLogic Server
inurl:/console/login/ intitle:"Oracle WebLogic Server 管理控制台"


搜集jboss入口:

1
2
3
4
inurl:/jmx-console/htmladaptor
inurl:/jmx-console/htmladaptor site:*.edu.*
inurl:/jmx-console/htmladaptor site:*.org.*
inurl:/jmx-console/htmladaptor site:*.tw


搜集websphere入口:

1
inurl:/ibm/console/logon.jsp


搜集phpmyadmin入口:

1
2
3
4
5
6
inurl:/phpMyAdmin/index.php 
inurl:/phpMyAdmin/index.php db+information_schema 指定命中数据
inurl:/phpMyAdmin/index.php intext:phpMyAdmin 2.7.0 直接针对特定版本号去搜索,更加精准
inurl:/phpMyAdmin/index.php site:*.tw
inurl:/phpMyAdmin/index.php site:*.org
inurl:/phpMyAdmin/index.php site:*.hk


批量搜集webmin入口[其实就是一个web版的linux系统管理工具,默认情况下工作在web端的10000端口上]:

1
intitle:Login to Webmin intext:"login to the Webmin server on"


批量搜wordpress程序[关于wp的特征比较多,大家可自行构造]:

1
2
3
inurl:/wp-login.php  site:*.hk
index of /wp-content/uploads inurl:/wp-login.php
inurl:/wp-content/themes/theagency 上传漏洞


批量搜joomla程序:

1
2
3
4
5
inurl:/administrator/index.php
inurl:index.php?option=com_advertisementboard 找注入
inurl:index.php?option=com_carocci
inurl:index.php?option=com_product
inurl:/administrator/index.php site:*.hk


批量搜drupal程序:

1
inurl:CHANGELOG.txt intext:drupal intext:"SA-CORE" -site:github.com -site:drupal.org

批量搜discuz程序:

批量搜集opencart程序:

批量搜集phpbb程序:

更多…

当然,你也可以根据下面的一些特征去找特定的开源程序[这种命中率显然没有直接用特征目录的命中率高]:

1
2
3
4
5
6
power by wordpress                powered by discuz x3.2
powered by phpcms 2008 powered by drupal 7
powered by dedecmsv57_gbk powered by CubeCart 3.0.6
Powered by phpBB 2.0.6 powered by paBugs 2.0 Beta 3
inurl:wp-login.php inurl:/administrator/index.php
inurl:/admina.php

批量搜集目标是否用了一些存在漏洞的邮件程序[不一定有,多尝试,反正是搜集,找到东西价值越高越好]:

1
2
3
owa:
inurl:/owa/auth/logon.aspx
inurl:/owa/auth/logon.aspx site:*.org.*

1
2
3
mirapoint(ShellShock):
inurl:/cgi-bin/search.cgi site:*.org.*
inurl:/cgi-bin/madmin.cgi


1
2
3
Zimbra(本地包含):
inurl:7071/zimbraAdmin/
inurl:/help/en_US/standard/version.htm
1
2
3
4
5
6
7
Atmail(用于连接数据库的配置文件泄露):

TurboMail(配置错误,进入任意邮箱):

U-mail(注入&getshell):

Lotus Domino Webmail(越权访问):

批量找常规网站后台[下面的php也可以换成asp,aspx,jsp 多次尝试,因为每个国家对后台的命名习惯各有特色,所以,这里只列举了一些相对命中率比较高的,找到后台以后,记得习惯性多尝试几个弱口令,万能密码未授权之类的东西]:

1
2
3
4
5
6
7
8
9
10
11
12
13
inurl:/manager/login.php site:*.jp
inurl:/cms/login.php site:*.jp
inurl:/manage/index.php site:*.jp
inurl:/system/login.php site:*.jp
inurl:/webadmin/login.php site:*.tw
inurl:admin_login.php intitle:admin login
inurl:admin_login.php intitle:admin page
inurl:/admin/login.php site:*.tw
inurl:/admin/index.php site:*.tw
inurl:/system/adminlogin.asp site:*.tw
inurl:/manage/login.aspx site:*.tw
inurl:/sysadm/index.php site:*.com
……


找svn泄露[运气好说不定能脱到密码]:

1
2
3
4
inurl:/.svn/entries 
inurl:/.svn/entries site:*.org.*
inurl:/.svn/entries site:*.gov.br
inurl:/.svn/entries site:*.hk


批量找目标的后台未授权访问:

1
2
3
4
5
intext:"Website Design & Developed By : WebSay"  默认后台/admin
intext:"Powered by ENS Consultants" 默认后台/admin/login.php
intext:"Desenvolvimento - MW Way" 默认后台/admin/index.php
inurl:.php?id= intext:"Web realizada por Soma Estudio"
inurl:/_mycps/login.php

批量找弱口令:

1
2
3
intext:"design by weli"   默认后台: /adm/login.php 除了弱口令还有注入
username : linjizen@gmail.com
password : lin719192

尽可能多的找到能够利用的各种上传点[比如:各种典型的漏洞编辑器地址,ck,kindeditor,fck,ewebeditor……]:

1
2
3
4
5
6
7
8
9
10
11
12
13
intext:" Powered by JADBM "   JADBM Cms upload shell 注册后登陆上传即可
inurl:"/index.php/frontend/login/en" Estate cms upload shell 注册后登陆上传即可
inurl:/Content/Roxy_Fileman/ 该路径下直接就是上传点
index of:"filemanager/dialog.php" 该脚本就是上传脚本直接上传即可
intext:"Desenvolvido por Webnet Soluções Tecnológicas." fck上传
inurl:"subir_foto.php" 上传点
inrul:"/imce?dir=" intitle:"File Browser"
inurl:"Powered by Vision Helpdesk 3.9.10 Stable" 注册后登陆进去编辑个人配置上传
index of /admin/fckeditor site:*.tw
inurl:/ewebeditor/ site:*.tw
inurl:/admin/upload_file.php
inurl:/admin/upfile.php
inurl:/admin/upload.asp

找到可能存在包含和命令执行类的漏洞的一些典型参数:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
inurl:footer.inc.php?settings=
inurl:/pb_inc/admincenter/index.php?page=
inurl:/pnadmin/categories.inc.php?subpage=
inurl:/index.php??view=src/sistema/vistas/
inurl:/edit.php?em=file&filename=
inurl:/path_to_athena/athena.php?athena_dir= 远程包含
inurl:/path_to_qnews/q-news.php?id= 远程包含
inurl:/inc/backend_settings.php?cmd=
inurl:login.action strus2系列执行漏洞利用
inurl:php?x= inurl:php?open=
inurl:php?visualizar= inurl:php?pagina=
inurl:php?inc= inurl:php?include_file=
inurl:php?page= inurl:php?pg=
inurl:php?show= inurl:php?cat=
inurl:php?file= inurl:php?path_local=
inurl:php?filnavn= inurl:php?HCL_path=
inurl:php?doc= inurl:php?appdir=
inurl:php?phpbb_root_dir= inurl:php?phpc_root_path=
inurl:php?path_pre= inurl:php?nic=
inurl:php?sec= inurl:php?content=
inurl:php?link= inurl:php?filename=
inurl:php?dir= inurl:php?document=
inurl:index.php?view= inurl:*.php?locate=
inurl:*.php?place= inurl:*.php?layout=
inurl:*.php?go= inurl:*.php?catch=
inurl:*.php?mode= inurl:*.php?name=
inurl:*.php?loc= inurl:*.php?f=
inurl:*.php?inf= inurl:*.php?pg=
inurl:*.php?load= inurl:*.php?naam=
allinurl:php?page= allinurl:php?file=
inurl:php?x= inurl:admin.php?cal_dir=
inurl:php?include= inurl:php?nav=
inurl:*.php?sel= inurl:php?p=
inurl:php?conf= inurl:php?prefix=
inurl:theme.php?THEME_DIR=
inurl:php?lvc_include_dir=
inurl:php?basepath= inurl:php?pm_path=
inurl:php?user_inc= inurl:php?cutepath=
inurl:php?fil_config= inurl:php?libpach=
inurl:php?pivot_path= inurl:php?rep=
inurl:php?conteudo= inurl:php?root=
inurl:php?configFile inurl:php?pageurl
inurl:php?inter_url inurl:php?url=
inurl:php?cmd= inurl:path.php?my=
inurl:php?xlink= inurl:php?to=
inurl:file.php?disp=

找可能存在数据库注入各种参数:

1
2
inurl:categorysearch.php?indus=
intext:"樂天台東民宿網" inurl:news_board.php

小商城类:

1
2
3
4
5
6
7
8
9
10
inurl:".php?catid=" intext:"View cart"
inurl:".php?catid=" intext:"Buy Now"
inurl:".php?catid=" intext:"add to cart"
inurl:".php?catid=" intext:"shopping"
inurl:".php?catid=" intext:"boutique"
inurl:".php?catid=" intext:"/store/"
inurl:".php?catid=" intext:"/shop/"
inurl:".php?catid=" intext:"Toys"
inurl:details.php?BookID=
inurl:shop.php?do=part&id=

普通cms类:

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
inurl:article.php?ID=        inurl:newsDetail.php?id=
inurl:show.php?id= inurl:newsone.php?id=
inurl:news.php?id= inurl:event.php?id=
inurl:preview.php?id= inurl:pages.php?id=
inurl:main.php?id= inurl:prod_detail.php?id=
inurl:view.php?id= inurl:product.php?id=
inurl:contact.php?Id= inurl:display_item.php?id=
inurl:item.php?id= inurl:view_items.php?id=
inurl:details.asp?id= inurl:profile.asp?id=
inurl:content.asp?id= inurl:display_item.asp?id=
inurl:view_detail.asp?ID= inurl:section.php?id=
inurl:theme.php?id= inurl:produit.php?id=
inurl:chappies.php?id= inurl:readnews.php?id=
inurl:rub.php?idr= inurl:pop.php?id=
inurl:person.php?id= inurl:read.php?id=
inurl:reagir.php?num= inurl:staff_id=
inurl:gallery.php?id= inurl:humor.php?id=
inurl:spr.php?id= inurl:gery.php?id=
inurl:profile_view.php?id=
inurl:fellows.php?id= inurl:ray.php?id=
inurl:productinfo.php?id=
inurl:file.php?cont= inurl:include.php?chapter=
inurl:principal.php?param=
inurl:general.php?menue= inurl:php?pref=
inurl:nota.php?chapter= inurl:php?str=
inurl:php?corpo= inurl:press.php?*[*]*=

除了上面这些常规找注入的方式,你不妨还可以像下面这样,直接在网页标题中搜SQL语句,说不定也会有收获哦,web万能的谷歌:

1
intitle:注入常用的一些sql语句,比如:常用的union,substr(),select等等……

批量搜集万能密码(其实也属于sql注入的一种):

1
2
3
inurl:"wladmin/login.asp"  
Username : '=' 'or'
Password : '=' 'or'

1
2
3
intext:POWERED BY Versatile Software Services       默认后台/alogin.aspx
User ==> 'or''='
Pass ==> 'or''='
1
2
3
inurl:/media.php?hal=login
Email: '=''or'@gmail.com
Pass: '=''or'
1
2
3
intext:"Powered by : Best Webmasterz." 默认后台/admin
User : '=' 'OR'
Pass : '=' 'OR'
1
2
3
intext:"Web Design and Maintenance by Cloud 5 Solutions" 默认后台/admin/login.php
User : '=' 'OR'
Pass : '=' 'OR'
1
2
3
intext:"网站设计:火龙科技" 默认后台/maintain/login.php
Username : '=' 'or'
Password : '=' 'or'
1
2
3
intext:"Powered by Moodyworld" 默认后台/admin/
Username : '=' 'or'
Password : '=' 'or'

找遗留的各种数据库报错,物理路径,数据库版本,服务器探针类文件等等……

1
2
3
4
5
6
7
8
9
10
site:*.tw  inurl:/phpinfo.php
filetype:log "PHP Parse error"| "PHP Warning"
site:*.tw "id=" & intext:"Warning: mysql_fetch_array()
site:*.jp "id=" & intext:"Warning: getimagesize()
site:*.br "id=" & intext:"Warning: array_merge()
site:*.tw "id=" & intext:"Warning: mysql_fetch_assoc()
site:*.tw "id=" & intext:"Warning: mysql_result()
site:*.jp "id=" & intext:"Warning: pg_exec()
site:*.tw "id=" & intext:"Warning: require()
inurl:/robots.txt site:*.*


搜集各种账号密码,比如,数据库密码,ftp,vpn,htpasswd,telnet等等……:

1
2
3
4
可能会遗留的密码文件:

inurl:passlist.txt
inurl:password.txt

1
2
3
重要配置文件泄露:

inurl:/application/configs/ 配置文件名为/application/configs/application.ini
1
2
3
htpasswd:

htpasswd.bak filetype:htpasswd
1
2
3
vpn(cisco)[捅内网,非常有用]:

filetype:pcf "GroupPwd"
1
2
cisco在线密码解密网站:
https://www.unix-ag.uni-kl.de/~massar/bin/cisco-decode
1
2
3
4
5
6
7
8
9
10
11
ftp 账号密码:

"index of/" "ws_ftp.ini" "parent directory"
"your password is" filetype:log
filetype:ini inurl:"serv-u.ini"
filetype:ini inurl:flashFXP.ini
filetype:ini ServUDaemon
filetype:ini wcx_ftp
filetype:ini ws_ftp pwd
ext:inc "pwd=" "UID="
auth_user_file.txt
1
2
3
4
例如:

http://www.cryptoman.com/ftp/
http://www.cryptoman.com/ftp/WS_FTP.ini

其他密码:

1
2
default password list	直接在谷歌中搜各类缺省用户名密码
admin account info" filetype:log

找目录遍历[上传点,数据库文件下载,phpmyadmin,网站后台及各种网站备份,源代码泄露等,同样也可以用这种方式慢慢找]:

1
2
3
4
5
6
7
8
9
site:*.hk index of /admin
site:*.hk index of /upfiles
site:*.hk index of /fckeditor/editor/
site:*.tw index of /admin/uploadfile
site:*.tw index of /admin/file
site:*.tw index of /system/file
site:*.tw index of /phpmyadmin
site:*.tw index of /web/backup/
inurl:/phpmyadmin/index.php site:*.tw

搜同行们的各种工具脚本:

1
绝大部分人在用别人东西的时候,基本是很少看里面代码的[即使开源],更不要说去除特征及后门,没办法现状如此,大家都很懒,既是如此,就不免要把自己的成果也被迫的共享给别人一份,所以养成良好的读代码习惯,是非常有必要的

搜同行的脱裤脚本:

1
intitle:登录 - Adminer    这里只是随便举个例子,你可以自己平时多搜集一些境内外常用的脱裤脚本的标题,文件名什么的,慢慢尝试,root空密码也很正常

同样,你也可以用上面这种方式来找下别人的aspx嗅探脚本,例如:

1
websniff

找别人遗留的各种webshell,平时注意多搜集一些镜内外常用的大马特征,这里只是随便举几个例子,你可以随意组装自己的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
inurl:b374k.php filetype:php
inurl:c99.php
inurl:c100.php Generation time:
inurl:itsecteam_shell.php
intext:x2300 Locus7Shell v. 1.0a beta Modded by
intext:c99shell inurl:c99.php
powered by Captain Crunch Security Team
"inurl:c99.php" + "intext:safe"
intitle:r57shell
intitle:c99shell +uname
inurl:c99.php uid=0(root)
intitle:c99shell+filetype:php
intitle:ly0kha shell
inurl:.php "cURL: ON MySQL: ON MSSQL: OFF"
"Shell" filetypehp intext:"uname -a:" "EDT 2010"
intitle:"intitle:r57shell"
inurl:"c99.php" & intext:Encoder Tools Proc.
inurl:"c100.php" & intext:Encoder Tools Proc.
intitle:"Shell" inurl:".php" & intext:Encoder Tools Proc.


还有更多其他的工具特征,就留给大家自己去整理了,有时候站在别人的肩膀上上进去,感觉也挺好的…

找到目标的owa和vpn入口[内网入口]:

1
2
3
4
5
6
owa入口:
inurl:/owa/auth/logon intitle:outlook
inurl:/owa/auth/logon intext:outlook

vpn入口:
inurl:/sslvpn site:hk

找些好下手的目标子域:

1
2
3
4
5
6
site:polyu.edu.hk inurl:asp?pid=
site:polyu.edu.hk inurl:aspx?id=
site:polyu.edu.hk inurl:php?id=
site:polyu.edu.hk inurl:jsp?id=
site:polyu.edu.hk inurl:do?id=
site:polyu.edu.hk inurl:cgi?id=

找目标的数据库备份及其它各类敏感文件目录[后缀一般为 sql,mdb,txt……],像数据库和网站备份这种东西,还是建议直接用工具跑比较好,前提是字典务必要精心制作:

1
2
filetype:sql inurl:backup inurl:wp-content
inurl:/eWebEditor/db/ site:*.com

从目标网站上搜集目标邮箱,说实话,目标自己网站上的邮箱价值一般都不是特别大:

1
site:*.gov.tw *@gov.tw

关于google hacking的东西基本就到此为止了,最后再推荐一个不错的google dorks站点,方便大家练习:

1
2
https://cxsecurity.com/exploit/  非常推荐
https://www.exploit-db.com/google-hacking-database/ 并不推荐,exp不错,但这方面比较废

关于谷歌的一些好玩的小玩具,无聊的时候可以自己玩玩,方法很简单,直接在谷歌里面搜下面的关键字就行了(说实话比百度人性多了):

1
2
3
4
5
6
7
8
do a barrel roll
Askew
zerg rush
google sphere
atari breakout 图片碰碰球
google gravity 碎片
google sky
blink html 抖动

想必说到这里,你也已经大概能感受到google到底是有多强大了:

1
错误配置,敏感文件目录,各种信息泄露(源码泄露,重要配置文件泄露,密码泄露等),批量漏洞利用,最强大的社工库资源等等……你在web上所能利用到的一切,无死角尝试就可以了

其它的一些小恶作剧,也不小了,不要瞎弄,做错了事始终是要承担责任的:

1
2
3
4
5
6
7
搜集个人身份证信息
filetype:xls 身份证 site:cn

搜集被盗QQ号什么的
搜集别人还在有效期的信用卡,不过千万不要干坏事儿哦,不然后果你懂的……

另外,还有图片识别,位置识别,谷歌为我提供了很多很强大的功能,有必要的话可以去深入学习下如何使用谷歌的这些api



关于robots.txt文件的作用:
    此文件一般位于网站根目录下,规定了搜索引擎不能爬行的一些目录,一般都是一些敏感目录,比如:后台,数据库连接配置文件,安装目录等等……一般我们在试了几个常用的后台目录都不行的情况,习惯性的就会直接去访问下目标的robots.txt文件,很可能这文件里面就存的有后台路径,但,那只是有可能,不尝试,连可能都没有

web渗透第一步之信息搜集 [ 透过cdn找目标真实ip ]

发表于 2014-12-13 | 更新于: 2017-10-18 | 分类于 bypasscdn
字数统计: 2,891 | 阅读时长 ≈ 10



0x01 在了解cdn之前,有必要先来科普下什么是 ‘负载均衡’ 以及’正/反向’ 代理,既然选择了做渗透,这些最基本的基础不熟悉肯定是不行的

正向代理 [ ForwardProxy ]:
    大家默认所说的代理其实都是指正向代理,不管是正向还是反向,理解数据的流向很重要,要理解这种比较抽象的东西最好的方式就是画图,比如下图就是一个正向代理的简易工作流程图,要表达的意思,已经很清晰了,就是说当客户端要去请求远程server上的资源时,并非直接通过本地路由网关到达远程server,而是先经过代理服务器,由代理服务器去帮我们请求,之后远程服务器会把请求的结果返回给代理服务器再由代理服务器返回给客户端,这么一个过程就叫正向代理,其实你还可以理解的更简单粗暴一点,它有点儿类似我们常说的 ‘翻墙’,正常情况我自己是不能直接上谷歌的,但我找了一个能上谷歌的代理,然后我们请求谷歌的时候可以让代理服务器去帮我们请求,最后,再通过代理服务器把响应的数据返回到我本地,就这么一个过程,包括我们常用的vpn其实也有点儿类似的功能(当然,这里只是粗略的类似,但vpn本质[隧道]上是什么,在前面已经有说明),不过现在正向代理可能用的比较少了,以前用代理服务器只是为了提高访问速度[因为缓存的原因],可以节省带宽,也可以在代理服务器上做些访问控制……

阅读全文 »

web渗透第一步之信息搜集[子域,旁站,C段,AS号...]

发表于 2014-12-12 | 更新于: 2017-11-20 | 分类于 search info
字数统计: 4,420 | 阅读时长 ≈ 16



0x01 为什么要从子域入手
    如果我们的目标网络规模比较大,直接从目标主域入手显然是很不理智的,因为像这种规模的目标一般主域都是重点防护区域,与其浪费那个时间,不如先从目标的某个子域进去,然后再想办法迂回接近我们的真正目标,这样无疑是个比较好的选择,此时,也就不难理解那句话了,安全本就是一个全面立体的概念,单单只是边界几个点的安全,那不叫真正的安全

0x02 那么,现在问题来了,怎么尽可能多的搜集目标的高价值子域呢

0x03 利用dig 检查目标ns服务器是否允许传送
    出于习惯性反应,首先,你应该去查下目标的ns服务器是否允许区域传送,如果允许,直接把目标的整个子域备份过来即可,后面将要说的所有步骤就可以直接全省了,关于dig和nslookup的使用非常简单,请自行查看其命令帮助或谷歌,实际测试中,个人还是更推荐用dig [毕竟是从权威dns查的,结果相对较准]

查出目标所有的ns记录,然后挨个尝试目标ns服务器是否允许传送[这里要注意,务必是目标自己的ns服务器,第三方的不算],虽然说,可能性不太大,但运气好也不一定呢,总之,没尝试之前谁也不知道

1
2
3
4
# dig +short @8.8.8.8 cityu.edu.hk ns
vax.cityu.edu.hk.
cpccspc.cityu.edu.hk.
cpccux0.cityu.edu.hk.

通过上面的查询,我们确定了目标自己的三个ns服务器,下面就开始来尝试逐个传送,这里还是要注意,必须用目标自己的ns服务器来解析它自己的子域,如果还没搞清楚传送的具体原理,请务必先自行谷歌理解漏洞原理再来搞

1
2
3
# dig +nocmd @vax.cityu.edu.hk cityu.edu.hk axfr
# dig +nocmd @cpccspc.cityu.edu.hk cityu.edu.hk axfr
# dig +nocmd @cpccux0.cityu.edu.hk cityu.edu.hk axfr

很显然,上面的这些ns服务器都不允许传送,为了给大家看看实际的传送效果,这里就给大家一个可以传送的实例

1
# dig +nocmd @dns2.communilink.net i-software.com.hk axfr

0x04 从其他的各种记录中获取子域,如,mx记录,spf记录,srv记录…
    如果目标ns服务器实在不允许传送,我们就要开始后面正常的流程了,之所以要查各种记录,因为从这里也能获取一些目标子域,虽然想借此直接下手的可能性不太大,但对我们来讲同样有用

查目标的mx记录

1
2
# dig +short cityu.edu.hk @8.8.8.8 mx
smtp.cityu.edu.hk

0x05 各类子域搜集工具
    既然不让传送,其实也没什么特别好的办法,无非就是靠爆破或者从各类搜索引擎上现抓取,对于这类的脚本,质量也是参差不齐,既然有成品,我们不妨就直接拿过来改吧改吧接着用,像这种小脚本,没必要非花那个时间去自己写 [当然,对于自己练练代码还是很有必要的],不过,还是要先说明下,既然是个人写的小脚本,报错,不稳定,程序异常,是常有的事,毕竟,没有经过很多人长时间的测试,但我们的要求是,能用,结果正确,相对稳定可靠即可,效率可暂时不做过多考虑

0x06 介绍几款自己常用的perl脚本,功能强大,且较稳定,不出意外的情况下,基本都是自己的首选

dnsenum 搜集信息比较规整,全面,如,ns,mx,a记录,自动尝试区域传送,也会从搜索引擎上抓取目标子域不过早已不太好使了,当上述动作执行完之后,即开始爆破,最后,把获取到目标的所有的域名所在的ip段以CIDR格式列出来,工具的整个执行流程跟我们之前手工的过程几乎是一模一样的,这也是为什么之前要先带大家手工走一遍的原因,这样非常有助于我们深入去理解工具,以后如果我们自己想写工具或者定制别人的工具这些都是一手参考样本

1
2
3
4
5
常用选项:
-t 指定爆破线程
--dnsserver 指定用于查询的dns服务器地址
-f 指定子域字典
--enum 三个选项的集合 --threads 5 -s 15 -w

1
# dnsenum --dnsserver 8.8.8.8 --enum -f /usr/share/dnsenum/dns.txt cityu.edu.hk




dnsmap 另一款比较好用的子域爆破工具,功能虽然没dnsenum那么多,但更加直观简洁,就是速度稍微有些慢,不过还好啦

1
2
3
-w 指定域名字典
-r 指定结果存放位置
-i 把泛解析,丢到指定的地址上

1
# dnsmap cityu.edu.hk

fierce 功能基本同dnsenum,实际测试中,效果会更好一些,速度很快,结果相对比较准

1
2
3
4
5
常用选项:
-dns 指定要爆破的目标子域
-dnsserver 指定用域查询的dns服务器
-threads 指定爆破线程
-wordlist 指定域名字典

1
# fierce -dns cityu.edu.hk -dnsserver 8.8.8.8 -threads 20 -wordlist /usr/share/dnsenum/dns.txt


0x07 其它的一些py子域爆破脚本:

后面的几个脚本基本都是用dnspython库写的,所以,这里事先安装下,不过,在最新版的kali,默认就已经装好了:

1
# apt-get install python-dnspython

subbrute 说实话,并不怎么好用,速度慢,而且不太准,截取的信息也比较简陋,不过适合学习,关于此脚本库依赖,配置详情,请自行参考 https://github.com/TheRook/subbrute

1
2
3
4
names.txt		子域字典
resolvers.txt 用于请求查询的dns服务器地址
target.txt 准备好目标域名文件,可以同时跑多个子域
-s 指定自己的子域字典,默认会使用当前目录下的names.txt

1
# python subbrute.py -t target_domain.txt -c 16 -s /usr/share/dnsenum/dns.txt

subDomainsBrute 效果很一般,用的很少,关于此脚本依赖及配置,请参考 https://github.com/lijiejie/subDomainsBrute

1
2
3
dns_servers.txt 存放用于请求的dns服务器地址,里面最好加上谷歌的8.8.8.8
-t 指定扫描线程
-f 指定用于爆破的域名字典

1
2
# pip install dnspython gevent
# python subDomainsBrute.py -t 200 -f /usr/share/dnsenum/dns.txt cityu.edu.hk

Sublist3r 跟上面的靠纯字典爆破不同的是,该脚本是现从各类搜索引擎中抓取的目标子域,想法还是很不错的,而且现从各种搜索引擎抓取的子域质量要比前面单纯靠爆破出来的也要高的多的多,尼玛,就是谷歌抓取一直都有问题验证改的贼快,不靠人民币,看来是很难痛快的玩耍了,另外,顺带的端口探测也是蛮不错的,较实用,对了,使用此脚本前务必先挂好vpn,你应该懂的,更多详情请参考 https://github.com/aboul3la/Sublist3r

1
2
3
4
5
-d 	指定要爆破的目标子域
-p 扫描那些已经爆出来的子域所开放的端口
-t 指定爆破线程
-e 指定要爬取的搜索引擎,默认是从所有搜索引擎上抓取
-b 启用暴力破解模块

1
2
# pip install -r requirements.txt
# python sublist3r.py -d cityu.edu.hk -p 80,443,8080 端口不宜太多,不然速度会很慢


0x08 前面基本都是一些在终端下跑的小脚本,下面再来介绍一款纯图形化的信息搜集工具[本身的功能还是非常实用的,抓取目标子域只是它的一个辅助小功能而已]foca [对于大型目标相对比较好使],它最开始是用来搜集目标站点的各种元数据的[至于元数据是什么,请自行谷歌],但现在开始逐渐支持常规的web漏洞扫描,错误配置扫描,自定义谷歌dorks,支持外部插件等等……,功能也已经趋于完善,而且纯图形化,配置选项[可使用google或者bing api]一目了然,相信大家一上手就会了,关键是能用它爬到我们想要的东西,最好再提醒一句,务必挂上vpn,谷歌可能有时还是用不了,尼玛

1
工具官方站点, https://www.elevenpaths.com/labstools/foca/   	可自行下载

0x09 相比之下,国内的朋友可能对seay的Layer 更熟悉,说实话,我自己确实用的比较少,总体来讲,还不错,除了爆破,顺便还会把响应头中的各字段数据也截取一下,使用非常简单,调好线程,纯图形界面也比较友好……给个目标子域,跑起来即可,字典文件和程序在同目录,如果你觉得它的字典质量不高,可以自己往里面加一些子域名,或者干脆用自己的字典,说实话,实际测试效果很一般

0x10 有些大公司基本一个C段都是他自己的,这都比较正常,所以,直接找下C端的目标web也未尝不可,有机会还是能直接跨过去的

1
# masscan -p 80,81,82,443,8080,8081 144.214.2.0/24 --rate=100

0x11 另外,如果目标规模真的是特别大的情况下,可以从AS号反查目标对应的ip段,然后再从这些段里面入手,也是靠谱的,有很多类似功能的反查站点,大家去谷歌搜搜,肯定一大堆

1
https://asnip.net/

0x12 如果你实在不太相信这类工具的话,比如我,也可以自己手工在bing,google,shodan…上慢慢翻,反正我们的最终目的只是想尽快随便找个目标子域先进去,工具有时候不见得会快很多,而且工具暂时还不具备人的经验判断的,经常跑出来很多没用的东西,虽然,手工找,可能稍微繁琐点,但往往更精准,总体算来效率还是高的,而且找到的东西往往更有价值

1
2
3
site:*.cityu.edu.hk 	谷歌,bing找子域
hostname:"cityu.edu.hk" shodan可能效果会更好一点
...

0x13 我们通常需要重点关注的一些目标子域,总结的不是很全,一下子暂时就想到这么些,大家自己慢慢拓展吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
内部oa系统
类似citrix的各种虚拟化办公系统
监控系统
日志搜集系统
crm系统
cmdb系统
mail系统
一些用于内部测试的目标站点,正常情况下,新功能上线一般都会先丢到测试机器上跑跑,没问题才会更新到线上,既是测试站点,防御自然也相对薄弱
一些老旧目标站点,有些目标站可能年头有些久,但由于业务的问题暂时又不能关闭,这也是一些相对比较好下手的地方
一些可能用于备份的机器,比如,边界的NFS,Rsync之类的
各类java控制台
各类服务器web管理面板
各类路由web管理面板
一些带有各类远程执行漏洞的特定版本的web中间件,比如,IIS6.0,Tomcat,jboss...
一般从子域命名大致都能看的出来,诸如,oa,zabbix,nagios,cacti,erp,sap,crm,cmdb,old,bakup,test...直接尝试针对这些的各类漏洞利用
所以,这个域名字典务必要有很强的针对性,最好花点时间自己好好整理一份留着,不然也很难跑出来我们想要的东西...
...

搜集目标子域小结:
    有时候,比如,当你直接跑test.org子域同时跑出来了os.test.org和monitor.os.test.org,这时你不妨尝试再把os.test.org当子域跑跑,说不定从这个子域下又会有不少收获,不过上面有些脚本也会自动遍历多级子域,这确实是个不错的切入点,可能还有些泛解析的问题,不过那些问题不太大,关于子域的各类查找手段,暂时就这些了,不管是爆破还是现从各种搜索引擎上抓取,我们最终目的只是为了想法设法接近我们真正的目标或者拿到一个边界入口,为我们后续方便进入目标内部先铺好路,工具仅仅只是为了辅助我们快速完成这一目的,并非决定性因素,所以大可不必在这类的工具上花太多时间,知道你自己想要的是什么就好了,还是那句话,你所搜集的每一个信息都有它存在的价值和意义,不要盲目,切记,从上面我们不难看到,反而是越大的目标,能入手的点就越多,废话不多说,祝大家好运吧 ^_^ ,最后觉得还是要再提醒大家一下,这里只是为了给大家更直观的说明,才不得不用了一些真实站点,希望大家不要恶意破坏,否则,后果自负

搜集目标的C段旁站信息 [主要针对某些小型单个目标站点]:

0x01 什么是旁站
    和搜集子域的情况类似,我们的直接目标站做的比较到位,从目标站本身基本上找不到什么比较好的入手点,这时候,如果想要快速拿下目标的话,一般都会先找个目标站点所在服务器上其他的比较好搞的站下手,然后再想办法跨到真正目标的站点目录中,前提是有权限,如果实在跨不过去,就只能想办法先提权[说实话,虚拟机其实是比较难提的]了,拿到服务器的最高权限以后就可以对目标站为所欲为了,一般我们把这种渗透方式就叫旁站,至于渗透同服其它网站的方法,和常规的web渗透并没什不同,只是相当于绕了个路进去的而已,关于web渗透,后续还会有大量的篇幅专门来说明,这里先不用着急

1
旁站: 和目标网站在同一台服务器上的其它的网站

0x02 什么是C段
    和旁站差不多的是,旁站是通过同一台服器上的其它网站跨到目标站的目录里,而C段,则是通过目标所在C段的其他任意一台机器,想办法跨到我们的目标机器上,至于怎么跨,嗅探,社工,web……随你便,反正最终目的能跨过去即可,实战可能还会有个问题就是,你搞下的一台目标C段机器在内网,也就是说它根本没有公网ip[靠路由映射进去的],像如果是这种情况,这台机器对你就没什么价值了,另外,如果是虚拟机,这种方式可能也不太好使,因为光提权就比较困难,这只是其中一个问题,很多其它的问题,我们暂时先不说,后续碰到再详细说,这里先理解一下基础概念即可

1
C段: 和目标机器ip处在同一个C段的其它机器,即都在同一个交换机下

0x03 关于旁站/C段工具的基本编写原理
    现在市面上这类的工具也是多如牛毛,但各有优劣(可能是接口质量的差别吧),但大多数都是用bing的接口,把查询到的结果数据中的旁站链接提取出来,C段和旁站唯一不一样的地方,就是C段是把整个段的ip上的旁站都轮询一遍,不过在此之前你需要先申请一下bing的搜索api,其实我自己都是选择性的用,因为不太准,手工直接在bing里面翻翻可能就有了,因为工具本身有时可能会漏掉很多有价值的参考信息,反正我们的目的就是随便找个能进去的站即可,怎么找,随意,你自己觉得怎么快就怎么来,渗透在乎更多的是结果和效率,过程几乎都不会太在意

0x04 好了,这部分内容确实比较简单,工具也没太多技术含量,单纯只是为了给大家理解一些基本概念而已,就不多说了

其实,还有非常多的一些提供类似功能的工具站,之前好用的,现在大多已经失效了,后期遇到好的再贴上来,大家可自行去谷歌上搜搜,确实挺多的,不过大部分似乎并不太好用,另外,大家如果有任何问题或者建议,也可直接私信我,其实,我一直都在

1
http://www.sameip.org/

web渗透第一步 之 信息搜集 [ 搜集目标真实ip信息 ]

发表于 2014-12-11 | 更新于: 2017-10-25 | 分类于 信息搜集
字数统计: 2,137 | 阅读时长 ≈ 8



0x01 在实际渗透中,给我们的目标可能仅仅就是一个域名或者某个组织名,那么该如何仅仅通过一个目标域名或者组织域名来确定目标所在的一些真实ip段呢,下面我们就开始整个信息搜集任务的第一步,搜集目标ip及域名信息,注意,这里我们暂且先不考虑目标是否用了CDN的问题,如何透过cdn找真实ip在后面会做单独说明,这里就先以正常的情况来说明

0x02 以www.cityu.edu.hk 为例,拿到目标域名的第一反应,没别的,先ping下目标域名看看解析情况再说

1
2
# ping www.cityu.edu.hk
www.cityu.edu.hk (144.214.5.62) ping 目标主域解析到的ip是这个

0x03 虽然没ping通,但这并不影响我们看它解析到的ip,不通的原因,还要看它提示的是什么,如果是超时,多半是因为防火墙拦截了imcp请求,不过这并不是重点,重点是我们已经发现这个域名被解析到了这个ip上,而且被解析的这个域名依然是 www.cityu.edu.hk,其实,从这里基本就已经可以确定这个ip就是目标的真实ip段内的[搞多了,自然就会有感觉],不信的话,我们可以直接尝试在浏览器中访问下解析到的这个ip,看看是不是会自动跳转到www.cityu.edu.hk 这个域名上的网页上,但仅仅就这一个ip还是远远不够的,对一个这种规模的大学来讲,机器肯定不再少数,我们接着往下走……

0x04 ping 完主域,顺手再来ping下子域,依然是没ping通,不过我们看到这个子域也被解析到了这个ip上[很可能是代理服务器或者负载均衡器什么的]

1
2
# ping cityu.edu.hk
cityu.edu.hk (144.214.5.62)

0x05 通过上面简单的ping,我们已初步发现目标所在的其中一个真实ip段,但仅仅只有这一个段还是远远不够的[像这种规模的大学,几乎整个B段都可能是它的],接着我们可以从目标的mx,ns,a记录入手,至于这些记录具体都是干什么的,这里就不细说了,大家请自行谷歌,因为我们今天的重点并不在这些记录本身,而仅仅是想通过这些记录[子域]获取一些目标的真实ip段,如下,推荐dig,nslookup不太准[非权威查询]

1
2
查目标的mx记录:
# dig +short @8.8.8.8 cityu.edu.hk mx

1
2
3
smtp.cityu.edu.hk (144.214.4.72)  
很显然,这只是目标的一个子域,根据ping解析到的结果我们发现这个ip也确实是香港ip
跟ping主域返回的结果是144.214.5.62,貌似是差了一个'C'段,不过,大致可以确定是目标的真实ip段


1
2
3
cityu-edu-hk.mail.protection.outlook.com (65.55.88.234)  
注意此域名,它并非目标子域,很显然是挂到outlook上的,ip也不是香港的
所以,此ip对我们实际的渗透意义并不大,可以忽略


1
2
3
查目标ns记录:
# dig +short @8.8.8.8 cityu.edu.hk ns
cpccspc.cityu.edu.hk (144.214.5.254) 目标子域,ip和主域处在同一C段中,可以确定为目标真实ip

1
vax.cityu.edu.hk (144.214.2.1) 目标子域,同处在B段中,初步确定为目标真实ip

cpccux0.cityu.edu.hk (144.214.5.253) 目标子域,ip和主域处在同一C段中,可以确定为目标真实ip


1
2
3
查目标a记录:
# dig +short cityu.edu.hk a
144.214.5.62 和直接ping的结果一致,确定为真实ip

0x06 当然,你可以从一些第三方网站上获取到目标的一些ip及域名信息,下面就推荐几个自己常用的

1
2
3
ip138的数据库还是蛮不错的,主要是更新频繁,只需提供一个目标ip或者域名[给子域就好了]即可定位ip所在地
如果你想把它写到脚本中批量查,它也提供查询接口,付点儿费,然后把接口写到你的脚本中即可
www.ip138.com


1
2
3
4
5
6
7
8
这是个相对比较老的信息搜集站,直接给个目标子域,它会把目标的一些子域也都列出来
然后你可以挨个点到每个子域里面再去看该子域详情,域名详情包括这个域名ip变更的历史记录
[比如,我们发现在www.cityu.edu.hk这个域名上曾经解析到过三个ip,尝试ping下以前的ip看看还在不在
说不定是个入手点呢],web服务器版本型号,操作系统类型[如果是一些低版本的操作系统,我们可以直接尝试比较经典的漏洞exp,比如iis(2000 2003)写等等……]
域名注册商[如果你想做域名劫持可能会用到],域名所在地等等……
从结果看到我们看到,主域其实是一台f5负载均衡设备[印证了前面的猜测]
另外从别的子域里面我们又发现了很多其它的真实ip段
www.netcraft.com


1
2
最后再来查下目标域名的 whois 信息,里面的一些内容对我们渗透也是有一定帮助的,比如,注册时留下的各种联系信息,邮箱,电话,姓名等等...
www.whois.com/whois

whois里面对我们有用的信息可能也就下面这些:

1
注册信息中的邮箱,名字,域名注册时间,过期时间以及当前注册状态


1
管理员各种联系信息,包括管理员邮箱电话,传真,各种名字[可以用来制作字典]


1
目标技术的联系方式,包括邮箱,电话,传真,名称


1
用于解析该域名的所有ns服务器,从这里面我们发现了两个我们之前在ns记录没查到的域名,不过一看,这很显然就不是目标自己的ns服务器,所以,忽略

0x07 通过上面的初步搜集,我们大致整理出了下面的一些目标真实ip段,因为段比较多,这里并没有都写上去……,关键是大家的搜集思路清晰就好:

1
2
3
4
5
144.214.2.0/24
144.214.4.0/24
144.214.5.0/24
144.214.236.0/24
……

0x08 到这一步,初步的ip及域名信息搜集就基本算是完成了,内容确实比较简单,关于工具的使用也比较容易,实在不会,看看命令的相关帮助应该就能明白了,可能最需要注意的地方还是 ping 的时候最好多ping几次,有时候因为自己的网速或者目标的网络问题,也会导致超时,并非一定是防火墙的原因,所以,一般ping 个5,6次就差不多了,当然,这里只是大家告诉你怎么手工去找,相信这里的一点铺垫,到后面会更利于你去理解和使用这一类的信息搜集工具,因为它们的工作流程大致都是如此,只不过我们现在是在手工实现它,还是那句话,实际渗透中怎么快怎么来[以效率为重],后面会说到dnsenum,一个脚本基本就可以把上面说的东西全干了……

0x09 当然啦,这仅仅还是万里长征的第一步,拿到准确的目标ip段信息,也是为了方便我们后面,对目标机器大概的部署情况做一些简要判断,从中找到一些可能的突破口,这中间还会涉及到cdn的问题,不过不用太着急,后面会再专门针对cdn做单独的详细说明,至于拿到这些真实ip信息以后的事情,就自己随意了,旁站,C段,ddos,爆破…………,自己想怎么发挥都行…

小结:
    没啥技术含量,方便加深对此类工具的深层理解,顺带留给有需要的朋友

OpenVpn 安全部署实战指南 [一]

发表于 2014-12-10 | 更新于: 2017-12-22 | 分类于 vpn config
字数统计: 4,016 | 阅读时长 ≈ 17



0x01 关于openvpn

1
2
一种基于OpenSSL加密库的开源VPN实现,此处的主要目的还是旨在说明如何快速安全部署openvpn
关于其内部的加解密细节及封装与解封装过程,相信大家都已经比较熟练了,此处不做过多涉及,暂以实战上手应用为主

0x02 openvpn 可工作于两种不同的模式,使用 TUN / TAP 作为接口建立隧道,但需要相应内核支持

1
2
3
TUN 接口创建的是三层路由隧道,实际中用的较多,TAP 是二层网卡桥接隧道,即创建一个以太网桥接,相对复杂
TAP 接口的好处在于,客户端可以获得 VPN 服务器所处子网的 IP [即,忽略物理上的区别,可以完全将客户端看做是与VPN服务器处于同一子网的另一台机器]
而TUN 接口下所有的客户端则处于一个完全独立的子网内,与 VPN 服务器所在的子网没有关系,待到后面实际部署时,会深有体会的

0x03 下面则是 openvpn 提供的两种安全模式

1
2
Static Key
X509 PKI [Public Key Infrastructure]

此次演示环境

1
2
3
4
OpenVpnServer  	  ip: 192.168.3.71 [假设为公网ip]   ip: 192.168.6.39 [假设为其所在的内网ip] ip: 192.168.7.39 [假设为其所在的另一个内网ip]
OpenVpnClient ip: 192.168.6.41 [内网ip] ip: 192.168.7.41 [另一个内网ip段] 为OpenVpnServer所在内网段的一台linux机器
win7cn ip: 192.168.32.253 [本地机器的内网ip] 作为连接OpenVpnServer的windows访问客户端
CentOS6.8_x86_64 ip: 192.168.32.136 [本地机器的内网ip] 作为连接OpenVpnServer的linux访问客户端

我们要实现的最终目的

1
2
通过拨入 OpenVpnServer 可在本地直接访问远程内网,即`192.168.32.x`和`192.168.6.x`,本身是两个完全独立相互不同的内网段
但现在要实现的效果就是,可以直接在win7cn或者CentOS6.8上ping通OpenVpnServer所在内网中的OpenVpnClient机器

0x04 Ok,明确了最终目的之后,我们就开始来实战部署OpenVpn

首先,进行一些前期的必要环境准备,务必严格保证所有机器时间完全一致,此项非常重要,否则后期OpenVpn客户端在连服务端时会出现证书无法被验证的情况

1
2
3
4
# /usr/sbin/ntpdate time.nist.gov  先手工在所有机器上同步一次,之后再加到计划任务中自动同步即可
# crontab -e
*/2 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1
# crontab -l

安装C编译器及openssl加密库,众所周知,openvpn依赖openssl对隧道数据进行加密

1
# yum install -y  gcc gcc-c++ openssl openssl-devel

禁用selinux,之后一定要记得重启下系统,才可生效

1
2
3
# setenforce 0
# sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
# shutdown -r now

准备好环境所需的源码包,此,分别为数据压缩库和openvpn自身的源码包openvpn的下载地址可能已经被墙掉了,大家暂时挂ss下一下就好了

1
2
# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
# wget https://build.openvpn.net/downloads/releases/openvpn-2.2.2.tar.gz

编译安装LZO,主要用它来压缩通信数据加快传输速度

1
2
3
4
# tar xf lzo-2.06.tar.gz
# cd lzo-2.06
# ./configure && make && make install
# echo $?

0x05 编译安装OpenVPN,记得要载入lzo一起编译

1
2
3
4
5
6
# tar -zxf openvpn-2.2.2.tar.gz
# cd openvpn-2.2.2
# ./configure --with-lzo-headers=/usr/local/lzo/include --with-lzo-lib=/usr/local/lzo/lib
# make && make install
# echo $?
# which openvpn 如果能看到路径,说明openvpn已经基本安装成功,默认是在/usr/local/sbin/openvpn目录下

0x06 安装成功后,我们就开始来实际部署配置OpenVpn

首先,修改默认证书信息,而后,以此来创建各种证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# cd /root/openvpn-2.2.2/easy-rsa/2.0/ && ll
# cp vars vars.bak
# vi vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="BeiJing"
export KEY_ORG="klionsec"
export KEY_EMAIL="klion@rootkit.org"
export KEY_EMAIL=klion@rootkit.org
export KEY_CN=CN
export KEY_NAME=kliosec
export KEY_OU=klionsec
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234
# tail -n 11 vars
# source vars 重新载入,让变量生效
# ./clean-all 把之前已有的证书全部先删掉
# ./build-ca 创建ca证书ca.crt 及根密钥ca.key [基本上一路按回车就好],因为在vars文件中已经定义好了默认的变量值,生成时会自动逐个读取
# ll keys/ 看下刚刚生成的ca证书在keys目录里有没有

创建服务端证书及密钥 [ 中间会有一处让你输入密码,注意,后续创建证书时的密码最好都跟此密码保持一致,防止认证失败,之后再按照提示输入两次y即可]

1
2
# ./build-key-server server
# ll keys/

创建完服务端证书和秘钥后,我们还需要为每一个登陆到OpenVpn服务器的客户端创建一个证书,注意直接用build-key创建的客户端证书默认是没密码的,也就是说,别人只要拿到你的这套客户端的证书就可以直接连上vpn服务器,有一定风险,当然,前提也得服务端配置中允许同一用户多点登陆才行,后续如果还要新增客户端用户,只需要再用build-key生成即可

1
2
# ./build-key client  注意,这里也会提示输入密码,为了避免出问题,和上面创建服务端证书时设置的密码保持一致即可
# ll keys/


1
2
# ./build-key-pass clientsec 如果你想创建带密码的客户端证书,直接用 build-key-pass 来创建即可
# ll keys/


创建秘钥交换协议文件

1
2
3
# ./build-dh    即迪菲·赫尔曼密钥,会生成dh1024.pem文件,生成过程可能会比较慢,在此期间不要去中断它
# ll keys/
# openvpn --genkey --secret keys/ta.key 生成ta.key文件,防DDos攻击,UDP淹没等恶意攻击,说实话,效果貌似并不太好

0x07 创建并修改openvpn服务器配置文件,将需要用到的openvpn证书和密钥复制一份到创建好的keys目录中

1
2
3
4
5
6
7
8
9
10
# mkdir -pv /etc/openvpn
# cd /root/openvpn-2.2.2/easy-rsa/2.0
# cp -ap keys/ /etc/openvpn/
# cd ../../
# cp sample-config-files/{server.conf,client.conf} /etc/openvpn/
# tree /etc/openvpn/
# cd /etc/openvpn/
# cp -a server.conf server.conf.bak
# grep '^[^#;]' /etc/openvpn/server.conf > tmp.txt
# cat tmp.txt > server.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 下面是openvpn服务端的完整配置
# vi server.conf
local 192.168.3.71 # 要绑定到的公网ip
port 11941 # openvpn服务的默认端口,最好改掉,其实,别人如果全端口扫描还是能扫到
proto tcp # 使用tcp协议,相对稳定
dev tun # 此处使用tun接口
ca /etc/openvpn/keys/ca.crt # ca证书路径
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # openvpn服务端证书路径
dh /etc/openvpn/keys/dh1024.pem
server 10.18.0.0 255.255.255.0 # openvpn内网ip地址池
push "route 192.168.6.0 255.255.255.0" # 此项非常重要,即vpn服务器所在的内网段
push "route 192.168.7.0 255.255.255.0" # 如果想让别人拨入成功后能直接跟vpn所在的内网段的机器进行通信,就需要用此方式把配置推到每个客户端
client-to-client # 让openvpn客户端和客户端能相互通信
duplicate-cn # 同一个vpn账号允许同时多点登陆,在上面已经提到过
ifconfig-pool-persist ipp.txt
keepalive 10 120 # 发心跳包,每10一次,如果超过120秒都没动静,就自动断开
comp-lzo # 启用传输数据压缩
persist-key
persist-tun
status openvpn-status.log # 开启OpenVpn服务端日志
log /var/log/openvpn.log # 指定日志存放位置
verb 3 # 指定记录的日志级别

0x08 修改完OpenVpn服务端配置后,我们再来稍微调整一些系统配置,如下

开启系统路由转发,因为在拨入成功后还要访问vpn服务器所在内网中的其它机器,所以转发是必须的

1
2
# sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
# sysctl -p

如果开了iptables,记得把tcp的11941端口[实际中是你自己设置的openvpn服务端口]和转发都放开,不然客户端可能会连不上,如果压根没开,可暂时不用管

1
2
3
4
5
# vi /etc/sysconfig/iptables
-A INPUT -p tcp --dport 11941 -j ACCEPT
# iptables -A INPUT -p tcp --dport 11941 -j ACCEPT
# iptables -L -n
# /etc/init.d/iptables status

最后,我们来尝试启动OpenVpn服务

1
2
3
4
5
6
# /usr/local/sbin/openvpn --config /etc/openvpn/server.conf &
# netstat -tulnp | grep openvpn
# echo "/usr/local/sbin/openvpn --config /etc/openvpn/server.conf &" >> /etc/rc.local
# tail -n 1 /etc/rc.local
# ifconfig -a openvpn服务一旦成功启动系统中就会多出一个名为tun0的虚拟网卡
# pkill openvpn


当然,除了手工去加载服务端配置文件来启动,你也可以用openvpn自己提供好的服务启动脚本来配置成常规启动,只是自己不太喜欢这样搞,过程非常简单,如下

1
2
3
4
5
6
7
8
# cp /root/openvpn-2.2.2/sample-scripts/openvpn.init /etc/init.d/openvpn
# chmod 700 /etc/init.d/openvpn
# chkconfig openvpn on
# chkconfig --list
# /etc/init.d/openvpn restart 会有报错
# vi /etc/init.d/openvpn 把148行的*.conf改成server.conf,这个目录下不能有多个.conf否则就会被干扰到
# /etc/init.d/openvpn restart 正常启动
# lsof -i :1194


0x09 把服务端完全搞定以后,我们再来看如何在不同系统平台下配置OpenVpn客户端进行连接

先下载并安装好 OpenVpn 的windows版客户端工具,地址已被墙

1
http://swupdate.openvpn.org/community/releases/openvpn-2.2.2-install.exe

此时,再到OpenVpn服务端去把指定客户端的证书及配置文件都下载下来[此处以client用户为例],之后再把这些文件全部复制到你OpenVpn客户端的config目录中,此处的OpenVpn客户端config目录是在如下的路径上,而你则要根据你自己的OpenVpn客户端安装目录来调整

1
2
# cd /etc/openvpn/keys/
# sz ca.crt client.crt client.key

1
2
ca.crt client.crt client.key  	所有要复制的文件
C:\Program Files\OpenVPN\config 要复制到的目录



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 手工创建好客户端配置文件,文件具体内容如下,注意在windows中客户端配置文件名必须为 client.ovpn 

client # 声明是客户端
dev tun # 和服务端保持一致,使用tun接口
proto tcp # 同样使用tcp协议,保持一致,不然就没法和服务端进行正常通信了
remote 192.168.3.71 11941 # Openvpn 服务端的ip和端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt # 客户端证书所在路径
cert client.crt
key client.key
ns-cert-type server
comp-lzo # 压缩传输
verb 3

之后,再右键以管理员权限运行openvpn客户端,点击connect 进行连接即可,如下即表示连接成功,至此,整个OpenVpn的部署工作也就完成了百分之八十,但我们的最终目的是希望能在本地通过拨入vpn直接跟远程内网中的机器进行通信,再次明确目的之后,我们继续


0x10 以上是使用windows客户端来连接OpenVpn服务端,至于如何在linux中使用客户端连接OpenVpn服务端就更简单了,跟OpenVpn服务端一样,先装好OpenVpn,之后只需用openvpn工具加载对应的客户端配置文件即可,注意,是客户端配置文件,另外,此处不需要再配置服务端,单单只是用下openvpn工具而已,具体如下

1
2
3
4
5
6
7
8
9
10
11
# mkdir /etc/openvpn
# cd /etc/openvpn
# rz 可以直接把刚刚client的一套证书丢上去
# tree ./
├── ca.crt
├── client.conf
├── client.crt
└── client.key

# 断开以后,第二次重连可能会有些问题,把客户端配置文件改个名就好了
# /usr/local/sbin/openvpn --config /etc/openvpn/client.conf &

0x11 再回到我们的最终目的上,如何在本地通过vpn直接跟远程内网进行通信,方式大概有三种,如下

第一种,把所有要通信的远程内网中的机器的网关都指向OpenVpn服务器的ip,这样,包在回传的时候就能找到本地机器,为了防止重启即失效,可直接把命令放在rc.local中

1
2
# route add default gw 192.168.7.39  在OpenVpnClient上添加如下指向
# route -n


第二种,走网段路由,在所有要通信的内网的机器上添加如下路由,把来自vpn内网段的数据都直接丢到OpenVpn服务器指定的内网ip上,一样也可以达到目的,但两种方式有个共同的确定,机器比较少的情况下也许还能凑活,如果有几千台机器,每台上都要添加一条这样的指向毕竟是很不现实的

1
2
# route add -net 10.18.0.0/24 gw 192.168.7.39  在OpenVpnClient上添加如下指向
# route -n


所以,我们再来看第三种,利用iptables进行NAT转换,即把源地址为10.18.0.0/24都转换到指定的内网卡ip上,这样就不用再逐个指定网关了

1
2
3
4
# /etc/init.d/iptables status  只需在OpenVpnServer服务器上添加如下规则即可
# /sbin/iptables -t nat -A POSTROUTING -s 10.18.0.0/24 -o eth2 -j SNAT --to-source 192.168.7.39 添加规则
# /sbin/iptables -t nat -D POSTROUTING -s 10.18.0.0/24 -o eth2 -j SNAT --to-source 192.168.7.39 删除规则
# /etc/init.d/iptables stop


0x12 实际生产环境中,由于各种各样的原因,有时可能还需要禁止指定的客户端用户登陆,方法非常简单,直接注销指定的客户端证书,万一要连续禁用多个vpn账号,那就直接一次性注销多个客户端证书,执行revoke-full后直接覆盖原来的crl.pem文件即可,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# cd /root/openvpn-2.2.2/easy-rsa/2.0
# source vars
# vi /root/openvpn-2.2.2/easy-rsa/2.0/openssl-1.0.0.cnf
# tail -n 6 /root/openvpn-2.2.2/easy-rsa/2.0/openssl-1.0.0.cnf 先注释如下行
#[ pkcs11_section ]
#engine_id = pkcs11
#dynamic_path = /usr/lib/engines/engine_pkcs11.so
#MODULE_PATH = $ENV::PKCS11_MODULE_PATH
#PIN = $ENV::PKCS11_PIN
#init = 0
# ./revoke-full client 指定要注销的客户端用户执行注销
# cat keys/crl.pem
# cat keys/index.txt 从该文件中可看到客户端用户的状态,R为已注销
# cp keys/crl.pem /etc/openvpn/keys/
# vi /etc/openvpn/server.conf 再到主配置文件中添加该pem文件位置,然后重启openvpn,该用户登陆即会失效
crl-verify /etc/openvpn/keys/crl.pem
# /etc/init.d/openvpn restart

下面是vpn账户被禁用后再登陆的效果,你会发现客户端的连接在一直被reset掉


后话:

1
2
3
4
vpn作为直插目标内部的一个最直接的入口,也颇受入侵者的热爱,尤其是对各种APT团队来讲更是如此,针对此所进行的各种形式的钓鱼也从未休止
其实,关于openvpn自身的漏洞并不多,甚至可以说,几乎没有,有也只是一些第三方库的,另外,基本也不存在什么错误配置能辅助我们渗透的
关于openvpn的内部通信过程,大家可自行拿wireshark&tcpdump仔细好好跟一下基本就看明白了,如果真想深入研究建议直接去阅读2.2的源码
在部署上基本无任何技术含量,只是为了方便大家用,顺便给自己做个备忘,保证后续随时能用即可

web渗透第一步之信息搜集 [win 2008 配置pptp]

发表于 2014-12-09 | 更新于: 2017-11-09 | 分类于 vpn config
字数统计: 3,490 | 阅读时长 ≈ 12


0x01 什么是vpn:

1
2
3
4
学名称虚拟专网,即在公共网络中搭建的一条专有通道
当用户连接到vpn服务器时,只需提供正确的账号密码即可进入到这条专用通道内,之后所有的通信数据也都会被这层通道包裹着来回传输
上面这样说可能有点儿不太形象,你可以把它想成我们之前所说的正向代理,或者'翻墙'
当然啦,vpn的用途远远不止这点,下面我们开始细说

下面是一些vpn应用场景:

1
2
3
4
5
6
7
1,公司员工想在家里通过公网直接访问到公司内网的服务器,即远程办公
2,学生放假回家,想在家里直接通过公网访问到自己学校内网的图书馆网站查阅资料
3,公司有好几个机房,现在有需求,希望把分布在各地的机房内的机器都连到同一个内网中(当然啦,域也是一种方案)
4,大型跨国组织公司想把分布在不同国家不同地域的分支机构连到同一个内网中,方便大家处理公司业务
5,通过各种类型的vpn隧道来bypass掉天朝的gfw
6,入侵者希望通过vpn来暂时性的隐匿自己[你知道的,tor也许会更好,有机会再说]……
7,等等……

0x02 一些常见的vpn隧道协议:

1
2
3
4
PPTP: 点对点隧道协议,其将控制包与数据包分开,控制包采用TCP控制,加密通信,搭建过程极其方便简单,非常适合个人使用
L2TP: PPTP和L2TP两种连接类型在性能上差别不大,可以把L2TP理解成pptp的升级版,如果使用PPTP不正常,可更换为L2TP
IPSEC(Openswan):把来回通信的数据加密放到隧道中传输,然后就是正常的封装和解封装过程,防止中间人窃听,常用于多个不同地域的机房内网互连
SSLVpn(openvpn):它的技术核心是虚拟网卡,基于SSL协议(加密库)实现,这也意味着它全程通信加密,而且非常稳定,也是个人极力推荐可用于实战渗透用途的vpn,跟其它vpn有些不一样的是,它属于C/S架构软件[即需要客户端和服务端],深入的通信过程还是比较复杂的,这里就不细说了,搭建自然也会稍微繁琐一点

0x03 接下来,我们就来简单搞搞清楚vpn的大致工作流程,为了让大家能够快速理解这个东西,会尽量说的比较简单通俗一些,当然,vpn具体的工作细节还是非常复杂的,不过,那并不是咱们今天的重点,我们只需要会搭建,会使用,能排一些简单的错[会看日志]即可,暂时不必过于深究协议层的东西,毕竟,你并非想自己开发各类vpn工具,大多时候学习亦是如此,要取舍得当,别偏离重点了就行,下面是我用自己的话对vpn工作特性的一点简要叙述,可能听着不太专业,但目的也是为了让大家更好的去理解,毕竟我们并不是在搞学术研究,所以,大可不必在一些专业名词上死扣,那样对我们的实际技术的提高其实并没有多大帮助,不是吗,废话说完,咱们就来粗略走一遍vpn的通信过程:

1
2
3
4
5
6
7
正常情况下我们和公网进行的任何通信,都必须先通过本地'网关'出去,再通过'网关'回来[俗称nat转换]
你可以暂时把vpn想成你家里的路由器,因为它们在功能上有些类似,我们知道,在家里,正常上网的情况下是通过本地路由网关实现的
但一旦你连上了vpn,以后上网的网关就不再是你家里路由器上的那个了,而是你vpn服务器上的'vpn网关'
因为在你拨通vpn以后,你的机器就会进入到vpn的内网中,而这个网关自然就变成了vpn服务器上的那个网关
也就是说你和公网进行的任何通信都要先交给vpn网关,回来的数据再通过vpn网关[nat],经过vpn隧道响应给你
举个简单的例子,当你挂上vpn以后去访问某个网站,用于解析域名的dns,其实是你vpn服务器所在的ip的当地的dns服务器
这样看来,也就不难理解为什么vpn会慢了,因为你每次请求响应都要经过两层节点,家的路由器网关和vpn网关,数据也都是通过包裹[封装]在vpn隧道中返回给你的

0x04 vpn对于我们实际渗透的意义,至于它在真实生产环境的好处,这里就不说了,可自行谷歌,对于一些大型跨国公司或组织,vpn还是一种比较靠谱的协作方案

1
2
3
4
1)隐藏入侵者真实ip,作为入侵者的第一道保护屏障,能熟练快速配置各类vpn是每个入侵者最基本的基本功,如果条件允许的话,你甚至可以多套几层vpn,无疑,这样速度肯定也会慢很多
2)加大目标溯源取证的难度和成本
3)灵活性好,主要是拥有了一台自己可以随意操作的公网ip,这样在实际渗透中会帮我们很多的忙
4)是所有入侵者,真正走向入侵的第一步

0x05 理解了vpn大致的工作流程以后,具体的配置就非常简单了,这里暂时以win下的pptp为例,进行一些实际的搭建配置

1
2
3
4
5
6
7
8
因为用vpn的主要目的还是为了保护我们自己,所以对于vpn的宿主系统,一系列的安全策略是非常必要的,比如,在win中你可以通过tcp/ip筛选限制3389[端口最好不要默认],vpn,还有你自己经常要用的这几个端口流量可以正常进出,其余的端口一律禁止,另外,启用系统禁ping,尽可能防止别人ddos,最好不要再在vpn服务器上同时搭建别的服务,尽可能减少别人下手的机会,总之,跑的东西越少越好,恪守'最少服务'原则,当然,如果别人手里有个可以随意远程溢出的0day,那就没什么好说的了,要想真正彻底防住,几乎是不太现实的,我们只能尽自己的能力,尽可能的保护自己,最后建议大家在实际渗透中全部用英文系统,具体原因你应该懂的,对了,还有防火墙,你可以根据自己的实际需求来,开了筛选,其实防火墙你就可以不用开了……
尽可能的禁用掉系统和vpn的各种日志审核记录功能及其所对应的服务,在系统里留的日志越少越好(防止被反渗透),记得定时上去看下日志,如果没看到什么特别的情况,定时把日志清空一下,方便自己分析
条件允许的情况下,务必把系统补丁打到最新,改掉rdp的默认端口,用户密码要严格遵守复杂性要求,大小写数字特殊字符随机排列,越随机越好,长度推荐至少12位以上,防止无聊的人爆破,如果是团队共用vps,密码最好一个人知道就可以了,严禁管理权限泛滥……
推荐在vpn上装个wireshark,可以时常去看看机器流量,或者留个隐蔽点的监控脚本也行,尽可能防止被别人反桶回来,不要以为哪些只是电影里才会出现的场景[很正常的情况],谨慎小心,方得永生……
切记千万不要在vps上保留任何容易暴露私人信息的任何东西,这极度,非常,特别重要,包括在各种工具里的有可能暴露私人信息的特征也务必要全部清干净……
用于入侵的vps,推荐一个月换一次,最迟两月换一次,换机房,换ip段,换国家,搞定一个项目后,最好把vps系统也都重装一下,买vps,尽量找一些靠谱的厂商,擦亮你的眼睛,这个也非常重要……
尽量不要经常利用vps进行任何大流量的动作,其实,在大多数的入侵过程下,我们根本没必要大规模持久性扫描,极易容易触发报警而被机房封,如果你经常干这事儿,只能说明你的入侵思路可能有问题,不妨多换换姿势,一般工具能扫出来的洞,基本人工很快也能看到了,好了,忍不住多说了一句废话,这方面的东西,后面还会大量的篇幅专门进行说明,这里就先到此为止吧
上面提供的仅仅都是一些极其简单的参考建议,其他更多的注意事项,最终还是要根据您自己的实际需求来……

0x06 说完简单的注意事项后,我们准备开始真正在windows server 2008R2上配置pptp vpn

1)首先,找到’服务’,关闭并禁用 “windows防火墙” ,将’远程路由’设为自启动,之后重启系统(防火墙关了以后,最好重启下)

2)重启完毕进入系统,打开’服务器管理器’,找到’角色’,点击’添加角色’,勾选’网络策略和访问服务’,然后再勾选’路由和远程访问’,点击’安装’



3)下面是具体的安装过程和安装完成后的状态,安装完成后点击关闭,回到’服务器管理器’中

4)安装过程中如果没什么问题,我们就开始配置pptp,到’服务器管理器’中,右键’路由远程访问’,点击’配置启用远程路由访问’,选择’自定义配置’

5)勾选’vpn’和’nat’ ,点击完成,即可开始自动安装并启动vpn服务,中间会提示个警告,说网络策略服务冲突,因为我们根本没配置nps,所以就不用管它了

6)选择启动服务,启动以后它会应用刚才的配置到服务中,配置完成后,vpn的配置界面就会自动跳出来

7)此时右键’路由和远程访问’,选择’属性’,找到’ipv4’选项,设置为’静态ip地址池’[这个ip地址池其实就是vpn的内网ip段],并禁用该选项日志记录功能


8)在下面的’ipv4’中,找到’公共’选项,右键属性,禁用该项日志

9)右键 ‘igmp属性’,禁用该项日志

10)右键’nat’,新建网卡接口,这里有两个接口,一个外网卡,一个内网卡,这一步非常关键,一定要在内网卡上启用nat

(1)首先,新建外部网卡接口,’internal’,从名字也应该能判断,这个肯定是用于公网通信的外网卡

(2)之后再右键新建网卡建接口,这个网卡是用于vpn内网通信的内网卡,记得务必在此网卡上勾选启用’nat’

11) 至此,pptp vpn服务端就算搭建配置完成了,不过,现在我们还没有用于登陆vpn的账号密码,所以,需要先新建一个系统用户(没错,win下的pptp vpn用户直接就是系统用户),并赋予其拨入权限,记得一定要用户给拨入权限,要不然客户端是拨不上的,其实,到这里你可能会忍不住多想一下,既然vpn用的是系统用户,如果目标也配置并开启了vpn服务,我们是不是可以直接给它的管理员悄悄的赋予下拨入权限,然后作为我们进一步渗透内网的桥梁岂不是很好,这里我们暂时先这样想着,后续,还会有大量的篇幅对这些东西进行详细的说明


12) 看下pptp服务器所在的ip,然后开始到客户端系统中配置vpn,进行连接测试,这里以win7作为客户端系统,看到vpn已正常连接,在客户端系统中也会多一个ip,其实就是vpn内网ip地址池里设置好的ip段,之后再在win7上ping下vpn服务器的内网ip,看看能不能通,能通基本就没什么问题了





13) 这时,我们在服务器端已经看到有一个vpn客户端在线,pptp的默认端口是1723

一些小结:
    至此,在windows 2008上的pptp vpn配置基本就全部完成了,可以看到,整个过程并没什么实际的技术含量,在这儿也就不多做说明了,当然vpn对我们的作用也并非仅限于于此,后面在实际的渗透过程中,还有更详细的说明,虽然这次是在2008上配置的,但和在2003,2012上配置pptp几乎没什么区别,基本流程都差不多,最多可能安装的地方不太一样,希望大家能举一反三,多尝试,熟了就好了

web渗透第一步之信息搜集[ubuntu 14.04LTS 快速安装配置pptp]

发表于 2014-12-08 | 更新于: 2017-10-17 | 分类于 vpn config
字数统计: 1,212 | 阅读时长 ≈ 5



0x01 一点安装配置前的准备工作:

1
先最小化安装好ubuntu server 14.04 LTS,除了ssh,尽量不要再勾选其它的系统服务,顺手做些简单的系统安全优化,尽量保证跳板系统的纯净

0x02 关于vpn的具体用途,在前面已有详细说明,此处不再赘述,下面只会专门说明如何在linux(暂以ubuntu14.04为例)中快速搭建配置pptp
1)首先,到Ubuntu中安装好pptp服务端

1
2
3
# apt-get install pptpd -y
# apt-get update
# echo $?

2)服务端安装完成后,我们就可以开始配置pptpd了,先看下本机ip[实际中应该是你自己vps的公网ip],因为等会儿要把这个写到pptp主配置文件中

1
# ifconfig -a

3)编辑pptpd 主配置文件,设置好本机ip和vpn 的内网iP地址池(分配vpn的内网ip要用)

1
# vi /etc/pptpd.conf

1
2
localip 192.168.3.185        本机ip,实际用的vps,那这里就写vps的公网ip
remoteip 172.16.110.1-20 设置vpn的内网ip地址池

4)编辑pptpd的dns配置文件,设置好用于解析的dns服务器ip,推荐用谷歌的8.8.8.8

1
# vi /etc/ppp/pptpd-options

1
2
ms-dns 8.8.8.8
ms-dns 114.114.114.114

5) 添加系统用户,没错,在linux中pptp也直接用的是系统用户,作为我们的vpn登录账户[不过,大多数可能都是nologin的]

1
2
# useradd xlion -s /usr/sbin/nologin
# passwd xlion

6) 把该账号密码添加到对应的pptp配置文件中,格式: username pptpd password *,如下:

1
2
# vi /etc/ppp/chap-secrets
xlion pptpd admin *

7) 重启pptpd服务,先看下服务到底有没有起来,不用急着连

1
2
# /etc/init.d/pptpd restart
# netstat -tulnp | grep "1723"

8) 编辑sysctl.conf 文件,开启系统的路由转发功能,如下

1
2
# vi /etc/sysctl.conf  
net.ipv4.ip_forward=1 将ip_forward 值改为 1

1
# sysctl -p  重新读取sysctl配置

9) 如果你已经安装并且开启了iptables,可以顺手把下面的规则加进去,否则,你可能会发现,vpn确实能正常连上,但死活上不了外网,其实原因很简单,你需要在vpn的这个内网段上做下nat,具体如下,这里的ip段是vpn的内网ip段,网卡接口是外网卡接口,意思就是在这个网卡上启用nat

1
2
# apt-get install iptables
# iptables -t nat -A POSTROUTING -s 172.16.110.0/24 -o eth0 -j MASQUERADE

1
2
3
4
设置下mtu,正常情况下1200即可,防止包过大,可以不用设置
# iptables -A FORWARD -s 172.16.110.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200
# iptables-save > /etc/iptables-rules
# /etc/init.d/pptpd restart

10) 让pptpd 服务随系统自启动

1
# update-rc.d pptpd enable

11) 开始配置客户端,进行连接测试,有时候,你可能会遇到这样的情况,虽然pptp客户端是连接成功了,但无法正常上网,ping的结果显示超时,绝大多数原因都是防火墙在搞鬼,你可以利用下面的命令直接把防火墙关掉,或者允许1723端口能正常进出应该就没问题了,至此,在ubuntu 14.04 LTS中搭建配置pptpd基本就算完成了

1
2
3
4
# ufw status
# ufw disable 停止防火墙并删除自启动
# ufw allow 1723 允许外部的1723端口访问
# ufw delete allow 1723 禁止外部访问本机的1723端口





12) 是不是觉得手敲命令太枯燥了呢,把它写成shell脚本吧,其实非常简单,稍微把命令堆砌调整一下即可,稍后会把自己的脚本都提供给大家,可根据自己的实际需求再稍微改下

一些小结:
    通观全文并没什么实际的技术含量,安装配置和win下基本也没有太大差别,只不过一个是靠图形界面,另一个是靠改配置文件来完成的,完全是看个人习惯,可能我自己比较习惯linux,所以更喜欢在linux中配置pptp,如果你觉得windows比较方便,那你就直接在windows上配置就好了,前提是要严格遵循前面所提到的一些关于系统的各种安全策略配置,不同的系统平台策略设置可能不太一样,后面会有专门的篇幅来讲解linux系统的安全部署,这里只要暂时能满足把服务先跑起来能用上即可,关于安全部署方面的东西,后面再详细说,因为你vpn宿主系统的安全也会直接关系到你自己的安全,大家可能在这上面还要多花点儿心思才是,也不早了,睡觉,安……!


深入透彻理解 sql注入

发表于 2014-11-10 | 更新于: 2017-09-12 | 分类于 pentest
字数统计: 2,471 | 阅读时长 ≈ 10



0x01 首先,创建测试库,表,准备好测试数据:

建库:

1
2
3
4
C:\>mysql -uroot -p
mysql> create database sqli;
mysql> show databases;
mysql> use sqli;

建表 personal_info(人员信息表),admin(假设为网站管理表,里面存的是网站后台管理员的账号密码):

1
2
3
4
5
6
7
8
9
10
11
12
mysql> create table if not exists `personal_info`(
-> `id` int unsigned not null auto_increment,
-> `name` varchar(50) not null,
-> `age` int not null,
-> `phonenu` varchar(20) not null unique,
-> `email` varchar(20) not null unique,
-> `sex` varchar(20) not null default 'man',
-> `birthday` date not null default '1991-01-01',
-> primary key(`id`),
-> index username_index(`name`),
-> index userpass_index(`phonenu`)
-> )ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci;

1
2
3
4
5
6
7
8
9
mysql> create table if not exists `admin`(
-> `id` int unsigned not null auto_increment,
-> `username` varchar(50) not null,
-> `passwd` varchar(50) not null,
-> `email` varchar(20) not null unique,
-> primary key(`id`),
-> index username_index(`username`),
-> index userpass_index(`passwd`)
-> )ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci;

0x02 理解 sql注入产生的根因:
    脚本在接收前台传过来的数据时,没有对该数据进行很好的安全检查就直接丢到数据库中去操作,导致入侵者在前台随正常数据一起提交过来的恶意sql语句也被一并带入数据库中执行[各种子查询,联合查询…],也就是说,注入的本质,只是数据库本身,与后端脚本,系统平台无关

0x03 我们利用 sql注入到底可以干些什么

1
在当前数据库用户权限够的时候,一般为数据库管理员

1
2
3
执行系统命令,但这并不直接就等于’提权’,具体权限的大小还要取决于你服务用户的系统权限
写文件,比如,我们可能会尝试往目标网站目录中写webshell,但能不能写进去,还要看目录具体权限
读文件,尝试读取带有账号密码的各类敏感配置文件,然后再想办法配合其它的漏洞一起利用
1
在当前数据库用户权限一般的时候,比如,只能在指定的库中进行正常的增删改查
1
2
像这种情况,一般我们可能会尝试查出目标网站管理员的账号和密码hash,然后再登到后台传webshell
或者搜集各种能搜集到[有权限]的各类用户密码数据,时刻为后面的字典作准备,以备不时之需

0x04 先理解一些最简单的sql注入漏洞语句原型及闭合方法:

最常见的 select 查询注入:
    关于select 的注入,也可能会是我们在实战中遇到的最多的一种注入语句,实际上在前端涉及增删改的操作一般都非常少,除非像那种论坛程序,对于大多数普通的cms而言,前端用户的大多数操作可能都是在点击链接,然后把对应的参数值传给后端脚本,然后脚本再到数据库中去查,之后再把查询的结果返回给前端页面显示给用户

1
2
3
4
5
标准数字型注入语句:
mysql> select * from personal_info where id=3;

数字型sql注入利用,数字嘛,也不存在什么闭合,直接跟上sql,就可以一下就把网站管理员的账号密码都查出来:
mysql> select * from personal_info where id=-3 union select username,passwd,3,4,5,6,7 from admin;
1
2
3
4
5
标准字符型注入语句:
mysql> select * from personal_info where name='fedora';

字符型sql注入利用,想办法闭合单引号,and后面可随意跟上各种子查询就可以把所有数据遍历出来了
mysql> select * from personal_info where name='fedora' and 12=12 -- -; '
1
2
3
4
5
各种常见的登陆框注入漏洞原型sql语句:
mysql> select * from admin where username='admin' and passwd='abc123';

具体利用方法如下,依然是闭合前面注释后面,在and后面跟上各种子查询,直到把所有想要的数据都遍历出来:
mysql> select * from admin where username='admin' and 12=12 -- - passwd='abc123';
1
2
3
4
5
针对各类搜索框注入的漏洞原型sql语句:
mysql> select * from personal_info where name like '%ka%';

具体利用方法 也非常简单,只需要前后的单引号和通配符都闭合掉即可保证语句的正常执行
mysql> select * from personal_info where name like '%%' and 12=12 -- +%';

insert 注入利用核心:
    因为一些功能需求,在前端可能会有很多需要录入各种用户信息的表单,丢给后端脚本以后,脚本会把传过来的这些数据再插到数据库,例如典型的基于各种形式的个人中心功能,一旦遇到了,都可以随便尝试insert注入,注意,想成功利用insert注入有个必要的前提,就是你一定要知道自己插入的数据在前端的什么地方显示,如果别人只是单单搜集用户信息,然后插到数据库中,并没有在前端页面上显示,即使你知道它存在insert注入也是个鸡肋

1
2
3
4
5
漏洞语句原型:
mysql> insert into personal_info(*) values('injection',123,'123456789011','sqli@inection.org','man','0000-00-00');

利用如下,注意这里的闭合方法,insert前后字段的个数和数据类型务必一致,不然是闭合不了的,具体该怎么确定字段个数呢,其实很简单,你就一位位的字段递增,直到它返回正常为止,然后再在爆出来的字段上查数据就可以了
mysql> insert into personal_info(name,age,phonenu,email,sex,birthday) values('injection',1,2,3,4,5)-- -123,'123456789011','sqli@inection.org','man','0000-00-00');

update 注入利用核心:
    关于update利用的点有两个,一个是在set的时候,如果set的是一个从前端传过来的变量,结果可想而知,另一个则是where后面的条件,因为这个条件也是可以从前端传过来的,这个后果想必就应该清楚了,相对于insert可能会比较麻烦的一点的是,update一般都是在set一个新值,这也就意味着我们在闭合的时候,在前端很可能是没有任何回显的,这样的话我们在实际查询数据的时候可能就要费点儿劲了,具体利用过程如下

1
2
3
4
5
漏洞原型语句:
mysql> update personal_info set email = 'flow@yeah.net' where name='fedora';

漏洞利用语句,其实,这里是利用mysql自身的报错特性来查数据的,但大多数情况下,稍微有点儿尝试的目标站一般都会接收页面错误,这时你依然可以利用盲注的来查数据,方法大同小异
mysql> update personal_info set email=''*(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)* '' where name='fedora';

关于对delete注入的利用:
    对于delete语句,我们唯一能控制的地方可能就只有where后面的条件了,清晰明白这一点之后,剩下的事情就很好办了,说实话,在现在的web程序里,在前台涉及到delete的操作非常少,可以说几乎是没有,不过有时还是可以在后台尝试下,尤其在权限特别高的时候,至于怎么利用它来查数据,跟update差不太多,基本也是靠报错或者盲注来搞,具体利用过程如下

1
2
3
4
5
漏洞原型sql语句:
mysql> delete from personal_info where id='fedora';

针对性注入利用,这个闭合其实跟select的时候差不多,无非就是数字或者字符串,数字就不存在什么闭合了,如果是字符串,注意闭合掉前后的单引号即可
mysql> delete from personal_info where id='fedora' or (select 1 from (select count(*),Concat((select database()),0x3a,floor(rand(0)*2))y from information_schema.tables group by y)x) -- +';

0x05 在对sql注入有了基本的了解之后,再来详细看看到底哪些地方容易出现sql注入,实战知道从哪儿入手

1
2
3
4
5
6
7
8
get请求的url,正常情况下这里应该是最先会尝试的地方
post数据字段中,数据较多时一般都会用post传,会是个不错的入手点
cookie中传的数据,有些还可能会把一些参数放在cookie中传,所以这儿也会是个不错的入手点
Referer本身用来记录上一个页面的url,但一旦被存到数据库中之后又被带入查询,你懂的
User-agent 本身用来记录客户端信息,只要被记录到数据库之后又被带入查询一样可被利用
X-Forwarded-For 本身专门用来记录客户端真实ip,如果脚本在处理时把它也带到数据库中去查询...
宽字节[双字节], 主要是由于前后端编码不统一造成理解歧义
只要是你发现会和后端数据库交互的地方全都可以随便尝试,并不仅限于我上面提到的这些...

0x06 最后,再来简单看下几种主流关系数据库的报错信息都大概是个什么样子,先混个脸熟,后面会再详细说

1
2
Mysql:
ERROR 1064 (42000): You have an error in your SQL syntax;

1
2
3
Mssql:
Server Error in '/sportpavilion' Application.
Unclosed quotation mark after the character string ''.
1
2
Oracle:
[Oracle][ODBC][Ora]ORA-01756:
1
2
Postgresql:
Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "\" at character 53
1
2
Sqlite3:
Error: HY000

0x07 下一阶段准备
    关于sql注入的基础科普就先简单到这里了,接下来,会再专门针对每种数据库具体的手工注入方法及注意事项做更详细的说明,待续…

1…151617
VK

VK

别惹我,我疯起来连自己都黑!

163 日志
115 分类
110 标签
RSS
GitHub E-Mail Twitter
安全资讯
  • FreeBuf
  • 指尖安全
  • SecWiki
  • 先知社区
  • 嘶吼
  • 安全客
  • 安全牛
  • E安全
© 2019 VK
博客全站共312.4k字
由 Evil-404 维护
| 本站总访问量次
0%