—前言—
针对信安评估这个赛项来讲,应急响应部分基本上都是基于Win/Linux的,包括但不限于各类服务 中间件 操作系统等,一般来讲,遇到的比较多的还是Web的日志比较多,很多省赛以及22 23国赛都是Web的日志
赛题还是老几样,无非就是:提交攻击者的IP地址,者首次攻击成功的时间,操作系统版本,后门路径,可以进程等,那么大致方向确定了,其实也可以进行练习了。
常见的三种备赛练习方式:
1.自己/他人打自己靶机溯源:常见的攻击手法进行攻击后看靶机的日志等进行溯源
2.互联网靶场环境:常见的有各大比赛的环境以及公开的靶场
3.如果你不想努力了,我们这边也有现成的环境
一、HTTP基础
1.1 HTTP 状态码
大家在上网的时候肯定见过404 403 500等报错吧,那我们直入主题,关于响应码,我们这里列出常见且有用的,以表格呈现,方便清晰和保存
1.2 HTTP 请求
所有HTTP消息(请求与响应)中都包含一个或几个单行显示的消息头(header),然后是一个强制空白行,最后是消息主体(可选)。以下是一个典型的HTTP请求:
这需要我们具备捕获数据包的基本操作
其中包含一些其他参数,比如我们常见的 cookie,host,User-Agent 等,我们在后面会讲解
HTTP请求方式主要分类如下,我们一个一个讲解:
- Get
- Post
- HEAD
- TRACE
- OPTIONS
- PUT
1.Get 🔺
**GET方法的作用在于获取资源。**它可以用于URL查询字符串的形式向所请求的资源发送参数。这使用户可将一个包含动态资源的URL标注为书签,用户自己或其他用户随后可重复利用该书签来获取等价的资源(作用与标注为书签的搜索查询相似)。URL显示在屏幕上,并被记录在许多地方,如浏览器的历史记录和Web服务器的访问日志中。如果单击外部链接,还可以用Referer消息头将它们传送到其他站点。因此,请勿使用查询字符串传送任何敏感信息。
2.Post 🔺
**POST方法的主要作用是执行操作。使用这个方法可以在URL查询字符串与消息主体中发送请求参数。**尽管仍然可以将URL标注为书签,但书签中并不包含消息主体发送的任何参数。许多维护URL日志的位置及Referer消息头也将这些参数排除在外。因为POST方法旨在执行操作,如果用户单击浏览器上的“后退”按钮,返回一个使用这种方法访问的页面,那么浏览器不会自动重新发送请求,而是就即将发生的操作向用户发出警告,如图3-1所示。这样做可防止用户无意中多次执行同一个操作。因此,在执行某一操作时必须使用POST请求。
3.HEAD
这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返回消息主体。==服务器返回的消息头应与对应GET请求返回的消息头相同。因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
4.TRACE
这种方法主要用于诊断。服务器应在响应主体中返回其收到的请求消息的具体内容。这种方法可用于检测客户端与服务器之间是否存在任何操纵请求的代理服务器。
5.OPTIONS 🔺
这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含Allow消息头的响应,并在其中列出所有有效的方法。
6.PUT 🔺
这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。例如,通过上传任意一段脚本并在服务器上执行该脚本来攻击应用程序。
前提是对方服务器未开启文件锁,允许新文件诞生。
1.3 HTTP 消息头讲解
该知识点是重点
我们将消息头分为如下二种:
请求消息头
响应消息头
有一些消息头对我们没多大用处,所以我们记住重点即可,其他作为参考就行。
常用消息头
Connection:这个消息头用于告诉通信的另一端,在完成HTTP传输后是关闭TCP连接,还是保持连接开放以接收其他消息。
Content-Encoding:这个消息头为消息主体中的内容指定编码形式(如gzip),一些应用程序使用它来压缩响应以加快传输速度。
Content-Length:这个消息头用于规定消息主体的字节长度。(HEAD语法的响应例外,它在对应的GET请求的响应中指出主体的长度。)
Content-Type:这个消息头用于规定消息主体的内容类型。例如,HTML文档的内容类型为 text/html。
Transfer-Encoding:这个消息头指定为方便其通过HTTP传输而对消息主体使用的任何编码。如果使用这个消息头,通常用它指定块编码。
请求消息头
Accept:这个消息头用于告诉服务器客户端愿意接受哪些内容,如图像类型、办公文档格式等。
Accept-Encoding:这个消息头用于告诉服务器,客户端愿意接受哪些内容编码。
Authorization:这个消息头用于为一种内置HTTP身份验证向服务器提交证书。
Cookie:这个消息头用于向服务器提交它以前发布的cookie。
Host:这个消息头用于指定出现在所请求的完整URL中的主机名称。
if-Modified-Since:这个消息头用于说明浏览器最后一次收到所请求的资源的时间。
如果自那以后资源没有发生变化,服务器就会发出一个带状态码304的响应,指示客户端使用资源的缓存副本。
If-None-Match:这个消息头用于指定一个实体标签。实体标签是一个说明消息主体内容的标识符。当最后一次收到所请求的资源时,浏览器提交服务器发布的实体标签。服务器可以使用实体标签确定浏览器是否使用资源的缓存副本。
Origin:这个消息头用在跨域Ajax请求中,用于指示提出请求的域
Referer:这个消息头用于指示提出当前请求的原始URL。
User-Agent:这个消息头提供与浏览器或生成请求的其他客户端软件有关的信息。
响应消息头
Access-Control-Allow-Origin:这个消息头用于指示可否通过跨域Ajax请求获取资源。
Cache-Control:这个消息头用于向浏览器传送缓存指令(如M-cache)。
ETag:这个消息头用于指定一个实体标签。客户端可在将来的请求中提交这个标识符,获得和If-None-Match消息头中相同的资源,通知服务器浏览器当前缓存中保存的是哪个版本的资源。
Expires:这个消息头用于向浏览器说明消息主体内容的有效时间。在这个时间之前,浏览器可以使用这个资源的缓存副本。
Location:这个消息头用于在重定向响应(那些状态码以3开头的响应)中说明重定向的目标。
Pragma:这个消息头用于向浏览器传送缓存指令(如no-cache)。
Server:这个消息头提供所使用的Web服务器软件的相关信息。
Set-Cookie:这个消息头用于向浏览器发布cookie,浏览器会在随后的请求中将其返回给服务器。
WWW-Authenticate:这个消息头用在带401状态码的响应中,提供与服务器所支持的身份验证类型有关的信息。
X-Frame-Options:这个消息头指示浏览器框架是否及如何加载当前响应
二、中间件日志分析
2.1 IIS中间件日志
一、应用顺序日志、平安日志、系统日志、DNS日志默认位置:%systemroot%\system32\config默认文件大小512KB管理员都会改变这个默认大小。
1平安日志文件:%systemroot%\system32\config\SecEvent.EVT 2系统日志文件:%systemroot%\system32\config\SysEvent.EVT 3应用顺序日志文件:%systemroot%\system32\config\A ppEvent.EVT 二、Internet信息服务日志 1FTP日志默认位置:%systemroot%\system32\logfiles\msftpsvc1\默认每天一个日志 2WWW日志默认位置:%systemroot%\system32\logfiles\w3svc1\默认每天一个日志 三、Schedul服务日志默认位置:%systemroot%\schedlgu.txt 以上日志在注册表里的键: 应用顺序日志,平安日志,系统日志,DNS服务器日志,这些LOG文件在注册表中的 HKEY_LOCA L_MA CHINE\System\CurrentControlSet\Services\Eventlog 有的管理员很可能将这些日志重定位。其中EVENTLOG下面有很多的子表,里面可查到以上日志的定位目录。 Schedlul服务日志在注册表中 HKEY_LOCA L_MA CHINE\SOFTWA RE\Microsoft\SchedulingAgent
2.2 Apache中间件日志
Apache的httpd.conf配置文件中写了日志的储存位置,一般是access_log和error_log两种,并且在httpd.conf配置文件可以查看apache日志路径:
grep -i"CustomLog" /etc/httpd/conf/httpd.conf
grep -i"ErrorLog" /etc/httpd/conf/httpd.conf
access_log:访问日志,记录对apache服务器请求的访问日志
error_log:错误日志,记录下报错的处理请求
2.3 Nginx中间件日志
Nginx的日志也是主要分为access.log、error.log,可通过查看nginx.conf文件来查找相关日志路径,默认日志会放在Nginx安装路径的logs目录中。如果通过yum源安装Nginx,那么access.log的默认路径为“var/log/nginx/access.log”。
日志内容同上
2.4 Tomcat中间件日志
tomcat一般为catalina.out、localhost、manager、localhost_access_log四种日志。
位于Tomcat目录下的“/conf/logging.properties”。
2.5 Weblogic中间件日志
weblogic在安装结束后会默认开启日志记录,默认配置下,会有3种日志,accesslog, Server log和domain log,WebLogic8.x 和 9及以后的版本目录结构有所不同。
WebLogic 9及以后版本:
access log在$MW_HOME\user_projects\domains\servers\logs\access.log
server log在$MW_HOME\user_projects\domains\servers\logs.log
domain log在 $MW_HOME\user_projects\domains\servers\logs.log
WebLogic 8.x版本:
access log路径如下:$MW_HOME\user_projects\domains\\access.log
server log路径如下:$MW_HOME\user_projects\domains\.log
domain log路径如下: $MW_HOME\user_projects\domains\.log
三、总结
3.1 思路总结
在常规的信安评估比赛中,目前见到的多的还是Linux下的Web日志,包括查询攻击者的IP、首次成功攻击时间、后门路径等
1.那么在Linux下我们要学会熟悉的掌握grep过滤的一些语法,因为日志文件的量是非常大的,尤其是遇到扫描 爆破等题目,熟练的使用语法可以很大程度帮助我们更快的定位到相关位置,以及统计数据。
2.其次是对各个中间件的熟悉,哪些日志在哪些文件夹下应该要有肌肉记忆,可以快速的定位到相关文件。
3.熟悉各类攻击手法,了解攻击原理才能够第一时间判断攻击者的攻击手段和思维,如:看到大量404的请求,首先应该想到攻击者在爆破,那我们直接过滤200的请求即可看到哪一条web被成功访问到了。如果看到大量?id=1等累死请求,那肯定是在sql注入,那我们也可以通过200的响应码去排查哪个参数被成功访问了,然后再去看数据库的相关日志来联合排查