WEB安全-信息打点

信息打点

信息打点就是信息收集

Web 架构

我们需要知道是什么语言开发的,中间件有什么,数据库采用的是什么,还有运行该网站的系统

Web 源码

分为CMS 开源、闭源售卖、自主研发

Web 源码获取

泄露安全、资源监控、其他

Web 域名

子域名、相似域名、反查域名、旁注

实战

开发语言、源码、中间间的识别

我们以一个网站博客为例,通过F12抓包,发现这个网站的开发语言是PHP,源码是开源的CMS—Z-BlogPHP,中间件有Apache、OpenSSL等

数据库的识别

1、按照常见的语言+数据库会有固定的搭配

2、通过扫描端口,识别使用了什么数据库

3306是mysql常用的开放端口,所以猜测这个网站用了mysql

下面列举常见数据库开放的端口

一、关系型数据库
1、MySql数据库 ,默认端口是: 3306;
2、Oracle数据库 ,默认端口号为:1521;
3、Sql Server数据库 ,默认端口号为:1433;
4、DB2数据库, 默认端口号为:5000;
5、PostgreSQL数据库, 默认端口号为:5432;
6、国产的DM达梦数据库, 默认端口号为:5236。

二、NoSql数据库(非关系型数据库):
1.Redis数据库,默认端口号:6379;
2.Memcached数据库,默认端口号:11211 ;
3.MongoDB数据库,默认端口号:27017;

服务器的识别

1、通过对访问的uri进行大小写替换,看能否正常访问网站,因为Windows服务器对大小写不敏感,Linux服务器对大小写会有区分

2、通过ping 网站的服务器,通过TTL的时间区分

通过查看TTL的值,可以大致判断操作系统的类型,因为不同的操作系统通常使用不同的默认TTL值

WINDOWS NT/2000   TTL:128
WINDOWS 95/98     TTL:32
UNIX              TTL:255
LINUX             TTL:64
WIN7          	  TTL:64

这个接近128,所以大概率是WINDOWS NT

百度大概率是LINUX的服务器,一般大型企业都是用Linux的服务器

资产泄漏

CMS 指纹识别源码获取

云悉指纹识别平台

可以直接识别cms,就可以在网上直接下载,获取到源码,根据特性来搭建识别。

识别有指纹的,像百度,淘宝这些是不可以识别的,是属于内部团队开发的。

识别到web信息,IP信息,域名信息。

如果识别不了,那么就是自己开发等源码获取源码,获取这套源码在网上有没有出现过漏洞,这就是cms获取的意义。

备份文件

有些程序员会在网站源码文件夹路径下存放整个网站源码的备份文件,这个习惯是不好的,可以直接访问下载

对于备份文件是否存在,可以通过扫描工具进行扫描验证,如7kbscan

http://www.h0r2yc.com/
扫描到1.zip,访问www.h0r2yc.com/1.zip就可以进行下载
如果在www.xiaodi8.com同目录备份,就不会出现问题,无法下载到,如果在www.xiaodi8.com下面备份,就会出现安全问题
c:/wwwroot/www.xiaodi8.com/www.xiaodi8.com.rar 可以下载
c:/www.xiaodi8.com.rar 不能下载

访问域名不能下载,但是如果用IP访问的话,那么就要看IP指向的是不是www这个目录。具体能不能下载看网站情况。IP指向目录跟域名指向目录是不同的。

利用..上一级是不可以的。没有接受进行路径操作。

GIT泄漏

Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。

漏洞利用工具:GitHack
github项目地址:https://github.com/lijiejie/GitHack

使用方法,现在支持python3了

python GitHack.py http://121.36.49.234/.git/

SVN泄漏

SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。

测试访问http://trafficbonus.com/.svn/entries,如果存在下面页面,则证明有这个漏洞

使用该项目进行攻击

https://github.com/callmefeifei/SvnHack

攻击代码

F:\python2\python.exe SvnHack.py -u http://trafficbonus.com/.svn/entries --download

-DS_Store 泄漏

.DS_Store是Mac下Finder用来保存如何展示文件/文件夹的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。

漏洞利用工具:https://github.com/lijiejie/ds_store_exp

composer.json 泄漏-PHP 特性

Composer.json配置文件说明参考https://blog.csdn.net/qq_35655945/article/details/79694249

可以理解为配置文件,可以通过它来获取源码文件

测试english.cmdesign.com.cn/composer.json

GITHUB泄漏-资源监控-语法搜索&关键字搜索&社工

网站:blog.aabyss.cn

在GitHub中直接搜索aabyss

社工CMS开发者,一般开发者会保留个人信息,在代码中保留邮箱、账号、密码等。可以进行脚本监控,如果监控到了就会进行发送信息

比如小迪博客资源中邮箱等关键字

搜索www.yiwuku.com,发现是ZBLOG的CMS

GITHUB 资源搜索:

in:name test #仓库标题搜索含有关键字
in:descripton test #仓库描述搜索含有关键字
in:readme test #Readme 文件搜素含有关键字
stars:>3000 test #stars 数量大于 3000 的搜索关键字
stars:1000..3000 test #stars 数量大于 1000 小于 3000 的搜索关键字 
forks:>1000 test #forks 数量大于 1000 的搜索关键字
forks:1000..3000 test #forks 数量大于 1000 小于 3000 的搜索关键字 
size:>=5000 test #指定仓库大于 5000k(5M)的搜索关键字 
pushed:>2019-02-12 test #发布时间大于 2019-02-12 的搜索关键字 
created:>2019-02-12 test #创建时间大于 2019-02-12 的搜索关键字 
user:test #用户名搜素
license:apache-2.0 test #明确仓库的 LICENSE 搜索关键字 
language:java test #在 java 语言的代码中搜索关键字
user:test in:name test #组合搜索,用户名 test 的标题含有 test 的关键字

配合谷歌搜索:
site:Github.com smtp 
site:Github.com smtp @qq.com 
site:Github.com smtp @126.com 
site:Github.com smtp @163.com 
site:Github.com smtp @sina.com.cn 
site:Github.com smtp password 
site:Github.com String password smtp

服务厂商

服务厂商也就是网站搭建使用的服务器,比如阿里云,华为云,腾讯云。或者学校内部(自己的机房),大型公司(自己的机房)。

通过判断服务厂商可以知道防护难度大不大,防护情况是怎么样的,换一种思路进行渗透

可以基于IP地址/域名收集到服务器信息、电话号码、注册域名商等。

https://www.ip138.com/

网络架构

如果是本地搭建,一般会在内网搭建,有映射关系

如果是阿里云等,一般是外网服务器搭建

一般在企业,学校部署:

外网:171.40.78.83 内网:192.168.1.100 web

外网出口(路由器,交换机)做一个映射 反向代理

主动把192.168.1.100 web流量给到171.40.78.83

作为安全测试:

扫描探针信息:171.40.78.83,这样就扫不到相对应的端口,会误报或者扫不到。

协议应用

扫描端口:常见默认端口

本机应用协议:ssh ftp Redis 等服务

nmap 用法:https://blog.csdn.net/m1585761297/article/details/80015726

利用nmap可以对指定网站进行端口扫描

nmap 47.100.167.248 
nmap -p80,443,22,21,8080,25 47.100.167.248 //指定端口
nmap -p1-100 47.100.167.248//从端口范围1-100扫描

另外一个工具masscan

使用参考:https://blog.csdn.net/weixin_46789316/article/details/110383622

sudo masscan 47.100.167.248 -p80
sudo masscan 47.100.167.248 -p80,81,20,21
sudo masscan 47.100.167.248 -p0-100

内网资产

扫网段:

目标:171.40.78.83

网段:171.40.78.1-255 同一个网段

如果获取到171.40.78.82 这样就可以进行内网之间的渗透测试

旁注:同服务器下面的不同web应用查询技术

c段:同网段下面的不同服务器IP下的web应用查询技术

sudo masscan -p8888,21,22,80,8081,3306 47.100.167.0/24

得到IP后,可以进行IP反查技术进行信息收集。

然后可以访问域名

阻碍信息获取

CDN

在网站其他地区创造一个结点,解决访问速度问题。如果是对CDN节点测试,就是方向就错了,是假的目标

判断:超级ping https://ping.chinaz.com/

我们先ping百度,发现都是就近服务器进行访问

然后我们ping一下xiaodi8.com,只有一台服务器,在香港

WAF

识别有下面几种方法

1、根据请求返回信息识别

https://www.cnblogs.com/AdairHpn/p/13985760.html

waf厂商识别很重要,大型网站一般很难绕过

2、利用工具识别

工具:wafw00f

git clone https://github.com/EnableSecurity/wafw00f.git
cd wafw00f
sudo python3 setup.py install
cd wafw00f
python3 main.py https://www.tn2000.com/ 
python3 main.py https://www.linuxpack.net 

负载均衡

kali自带ldb

ldb参考:https://blog.csdn.net/weixin_43876557/article/details/106398691

识别xiaodi8.com和baidu.com

防火墙

系统自带 硬件防火墙

一般与内网渗透有关联

外网:访问不到,那就基本上没有作用测试。

入站规则,出站规则。一般看入站规则

对端口扫描有一定的阻碍

端口识别:https://blog.csdn.net/fageweiketang/article/details/84642049

CDN绕过

前置知识

1、传统访问(没有CDN):用户访问域名–>解析服务器IP–>访问目标主机

2、普通CDN:用户访问域名–>CDN节点–>真实服务器IP–>访问目标主机

3、带WAF的CDN:用户访问域名–>CDN节点(WAF)–>真实服务器IP–>访问目标主机

什么是CDN

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

CDN配置

配置1:加速域名-需要启用加速的域名(www.xiaodi8.com、*.xioadi8.com)

配置2:加速区域-需要启用加速的地区(中国,外国等)

配置3:加速类型-需要启用加速的资源(图片、小文件、全站)

判定标准

nslookup

使用nslookup查看域名解析对应的IP地址,如果解析到多个IP地址则说明使用了CDN

各地ping(出现多个IP即启用CDN服务)

http://ping.chinaz.com/

使用工具直接查询

http://www.cdnplanet.com/tools/cdnfinder/
https://www.ipip.net/ip.html

绕过

参考文章:

https://zhuanlan.zhihu.com/p/33440472

https://www.cnblogs.com/blacksunny/p/5771827.html

ping

1、假设如下存在cdn —-> ping www.sp910.com

2、可以尝试ping sp910.com,很多厂商可能让www使用cdn,空域名不是有cdn缓存。

3、所以直接ping sp910.com可能就能得到真实IP。

发现存在CDN,ping一下sp910.com

分站域名

1、很多网站主站的访问量会比较大,所以往往主站都挂着cdn的。

2、但是分站就不一定了,毕竟cdn要钱,而且也不便宜。

3、所以可能一些分站就没有挂着cdn,所以有时候可以尝试通过查看分站IP。

4、可能是同个IP或者同个站都是没准的。

加速域名上面导致的问题:如果设置是www.yansiqi.com,这样只加速www这个域名 如果有test.yansiqi.com 没有加速,是真是IP。一般子域名极有可能和主站保持同一个IP

国外访问

1、国内的CDN往往只会针对国内用户访问加速。

2、所以国外就不一定了。因此通过国外代理访问就能查看真实IP了。

3、或者通过国外的DNS解析,可能就能得到真实的IP。

IP不一样,现在用国外的ping一下http://www.webkaka.com/ping.aspx

https://tools.ipip.net/cdn.php

MX及邮件

1、mx记录查询,一般会是C段。

2、一些网提供注册服务,可能会验证邮件,还有RSS订阅邮件,忘记密码等

3、可能服务器本身自带sendmail可以直接发送邮件,当然使用第三方的除外(如网易,腾讯等)

4、当然这个IP也要验证是否为主站的

5、web版的邮件管理,可以通过常看网页源代码看到IP

很多站点都有发送邮件sendmail的功能,如Rss邮件订阅等。而且一般的邮件系统很多都是在内部,没有经过CDN的解析。可在邮件源码里面就会包含服务器的真实IP。是一个主动连接。

mozhe.cn
怎么样网站发邮箱给你:
邮箱找回验证码,显示邮件原文 116.63.173.212
大概率,不是百分百真是IP
如果又不确定,就进行社工判定,查看归属地

利用网站漏洞

如果目标站点存在漏洞,这就没办法避免了。

例如phpinfo敏感信息泄露、Apache status和Jboss status敏感信息泄露、网页源代码泄露、svn信息泄露信、github信息泄露等。

若存在web漏洞,服务器主动与我们发起请求连接,我们也能获取目标站点真实ip。例如xss、ssrf、命令执行反弹shell等。

http://www.yansiqi.com/ssrf.php
输入地址,服务器自动会请求这个地址 http://47.94.236.117:8000 这个
47.94.236.117运行:python2 -m SimpleHTTPServer 8000
47.94.236.117开通了web服务,记录日志 www.yansiqi.com 存在ssrf漏洞(会接受用户的数据并利用服务器去请求)
漏洞请求47.94.236.117日志就会记录访问IP

找phpinfo()之类的探针

www.yansiqi.com/phpinfo.php
这个配置文件会泄露本身IP地址,将本地的地址给到你。php脚本主动把IP返回。

DOS

1、DDoS耗尽CDN流量,那么就会回源,这样就能得到真实IP

2、不设防的cdn量大就会挂,高防cdn要增大流量。

社会工程学

通过社工到站长的信息登录到服务器厂商管理后台获取真实ip

全网扫描

工具:FuckCDN https://github.com/Tai7sy/fuckcdn

资源加速问题:只是加速图片或者其他的,没有加速全站

运行fuckcdn.exe,设置ip.txt set.ini两个文件,运行输入访问的cdn节点IP+端口

配置set.ini文件:设置目标,findstr是设置关键字。

配置ip.txt:设置IP集合,https://www.ipip.net/ip.html

完成后出现result_ip.txt文件。

查看DNS历史记录

查询ip与域名绑定历史记录,可能会发现使用CDN之前的目标ip。查询网站有:

https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
http://toolbar.netcraft.com/site_report?url=
http://viewdns.info/
http://www.17ce.com/
https://community.riskiq.com/
http://www.crimeflare.com/cfssl.html

APP&小程序资产收集

抓包

配置安卓代理等,找到相对应的地址(图片地址113.106.48.72)

尝试直接访问

可以进行端口扫描

封包

如果抓包进行不了的话,那么就进行封包处理。这样也能进行资源的获取。也会抓到其他协议的数据包。逍遥模拟器不支持。

资源提取—AppInfoScanner

一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。

https://github.com/kelvinBen/AppInfoScanner

把apk文件放到AppInfoScanner目录

python3 app.py android -i apk名称

反编译完的的资源文件和smali代码都放到了out目录下

把apk的资源提取出来后,用黑暗引擎来查找相关的资源。比如提取相对应的md5值和hash值,进行fofa搜索,找到相对应的资源。

如果一些APP反编译不了,那么就需要去壳操作。

我们使用PKID对apk进行检测是否加壳

jadx反编译

视频中用的安卓修改大师,其实用jadx可以对apk进行反编译。搜索http://或者https://就可以得到apk内包含的一些链接

框架使用—Xposed&JustTrustMe

这个在搞安卓逆向的时候已经学过了,用到这个就可以绕过检测证书等进行抓包。

微信小程序—电脑版登录启动抓包分析

两个方面信息收集:web 和服务器

有些小程序其实就是APP 放到小程序里面

小程序管理后台:mituomimtm.cn/login

只能抓包,没有程序源码

搜索域名相关信息

利用网站或者工具进行信息收集

网络空间四大引擎-Fofa&Quake&Shodan&Zoomeye

黑暗引擎

https://fofa.info
https://quake.360.cn
https://www.shodan.io
https://www.zoomeye.org

fofa

fofa搜索语法

也可以直接搜索

左边还有些可以筛选的选项,直接点击就行了

360quake

zoomeye

黑暗引擎集合版项目

https://github.com/EASY233/Finger

集合了fofa和360quake搜索

使用教程

git clone https://github.com/EASY233/Finger.git
pip3 install -r requirements.txt
python3 Finger.py -h

修改一下配置文件

添加自己的key

查看选项

使用

python Finger.py -quake

自动化收集

ARL灯塔

https://github.com/TophantTechnology/ARL

支持功能

通过docker启动

Ubuntu 下可以直接执行 apt-get install docker.io docker-compose -y 安装相关依赖
cd /opt/
mkdir docker_arl
wget -O docker_arl/docker.zip https://github.com/TophantTechnology/ARL/releases/download/v2.6.1/docker.zip
cd docker_arl
unzip -o docker.zip
docker volume create arl_db
docker-compose pull
docker-compose up -d

Suize水泽

https://github.com/0x727/ShuiZe_0x727

apt install docker.io
docker pull yankovg/python3.8.2-ubuntu18.04
docker run -itd yankovg/python3.8.2-ubuntu18.04 bash
docker exec -it docker的ID /bin/bash
apt-get update
apt install git --fix-missing
apt install vim
rm /usr/bin/python3
ln -s /usr/local/bin/python3.8 /usr/bin/python3
python3 -m pip install --upgrade pip
git clone https://github.com/0x727/ShuiZe_0x727.git
chmod 777 docker_build.sh
./docker_build.sh

Kunyu

https://github.com/knownsec/Kunyu/tree/main

git clone https://github.com/knownsec/Kunyu.git
cd Kunyu
pip3 install -r requirements.txt

Linux:
	python3 setup.py install
	kunyu console

Windows:
	python3 setup.py install
	kunyu console
	或者
	cd kunyu
	python3 console.py

在第一次运行程序时通过输入以下命令进行初始化操作,提供了其他登录方式,但是推荐使用API的方式,因为用户名/密码登录需要额外做一次请求,所以理论上API的方式会更加高效。

输入info查看信息

搜索ip

SearchHost ip:39.97.118.130

关联域名/子域名搜索

SearchDomain www.xiaodi8.com

SearchDomain xiaodi8.com

SearchWeb www.xiaodi8.com


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 767778848@qq.com