0#awd
とは何か
0.1#AWD競争システムの紹介
「時折の防御モード| AWD(防衛での攻撃)」は、CTFコンペティションのいくつかの主要なゲームモードの1つです。
このモードでは、各チームには、通常、セキュリティの脆弱性を含む特定のサービスまたはアプリケーションを実行するのと同じ初期環境(GameBoxと呼ばれます)を持っています。参加チームは、ポイントを取得するためにフラグを取得するために、相手のチームのサービスのセキュリティの脆弱性を活用する必要があります。同時に、参加チームは、他のチームによって攻撃されて獲得されるのを防ぐために、彼らに対して防御するために独自のサービスの脆弱性にパッチを当てる必要があります。
主な特徴は、実用性、現実のタイミング、対立を強調し、競争チームの浸透と保護能力を包括的に考慮することです。
0.2#競合の全体的なプロセス
試合前の準備セッション:通常、SSHまたはVNCユーザー名とパスワードに割り当てられた複数のターゲットサーバー、および関連するIPおよびその他の情報を割り当てます
セキュリティ補強リンク:ターゲットマシンサーバーに自分でログインし、30分間のセキュリティ強化を実行する必要があります(ソースコードのバックアップ/弱いパスワードの変更/コード監査と修理/脆弱性の修理など)
無料攻撃リンク:セキュリティ強化時間が経過した後、無料攻撃リンクが開始されます。他のチームのターゲットサーバー(弱いパスワード/Web脆弱性/システムの脆弱性など)を攻撃して追加ポイントを獲得し、対応するチームはポイントを失います。
1#競争環境
通常、競争環境には3つの状況があります。
ハイブリッドターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Win Target Machine Windows Server 2003/2008/2012またはWindows 7+ Linux Target Machine Centos7.xまたはUbuntu 16.04/17.01/20.04
純粋なLinuxターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Linux Target Machine Centos7.xまたはUbuntu 16.04/17.01/20.04
純粋なWindowsターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Win Target Machine Windows Server 2003/2008/2012またはWindows7
2#セキュリティ補強プロセス(防衛)
2.0#基本補強プロセス
2.0.1 Windows補強プロセス
バックアップファースト:Webソースコード、データベース
445強化、ファイアウォールまたはIP高度なセキュリティポリシーを有効にします
システムログ監査機能をオンにします
ゲストアカウントを無効にし、ファイル共有を閉じます
スタートアップアイテムのコンテンツが制御可能であることを確認してください
リモートアクセスコントロールへの接続の数を制限する:ローカルグループポリシーエディターでは、コンピューター構成- 管理テンプレートウィンドウコンポーネントリモットデスクトップサービスリモートデスクトップセッションホストコネクションリミット接続の数を拡大します
ツールを使用して、キーディレクトリファイル:ファイル操作監視、exe、yujian file monitoring.exeを監視します。
PchunterとMonitorを介して検索された悪意のあるコードファイル
Webディレクトリ環境で関連する疑わしいファイルの検索:JPG/PNG/RAR、属性の表示、解凍、ファイルの内容の表示
NTFSはディスクをスキャンして、隠された交換フローデータを見つけます
システム内のすべてのアカウント情報を見つけ、非管理者アカウントを禁止します。
Webサイト管理者のアクセスパス、デフォルトのパスワード、およびデータベースパスワードを変更する
WAFスクリプトをインストールしてWebサイトを保護し、他の脆弱性を禁止します
2.0.2 Linux補強プロセス
バックアップ最初:Webソースコード、データベース
システムパスワード、統一されたチームパスワードを変更します
.bash_historyを介して履歴コマンドを検索し、痕跡を見つけます
スケジュールされたタスクを表示:Crontab -L;スケジュールされたタスクの編集:Crontab -E
/etc/init.d/rc.localのスタートアップサービスに例外があるかどうかを確認してください
スクリプトを使用して、プロセスの監視、ディレクトリ監視、トラフィック監視を可能にします
Webサイトのパスワード、サイト管理者パスの変更
システム強化:IPTABLE
2.1#基本情報コレクション
防御する場合、情報収集も非常に重要です。 sayingにあるように、「あなた自身とあなたの敵を知ってください、あなたは100の戦いで決して敗北することはありません。」
2.1.1 Linuxマシン情報を明確にする
UNAME -A //システム情報
ps -aux //クエリプロセス情報
ps -ef | GREPプロセス名//指定されたプロセスをフィルタリングします
ID //ユーザーIDとグループIDを表示するために使用されます
cat /etc /passwd //ユーザーの状況を表示します
LS/HOME///ユーザーの状況を確認してください
/-type d -perm -002 //書き込み可能なディレクトリチェックを見つけます
ifconfig //Linuxでネットワークカード情報を表示します
2.1.2 Windowsマシン情報を明確にする
hoami /all //Windowsでユーザーの詳細を表示します
ipconfig /all //Windowsでネットワークカード情報を表示します
2.1.3オープンポートを表示
Netstat //アクティブ接続を表示します
netstat -ano/-a //ポートステータスを確認します
netstat -Anp //ポートを表示します
Firewall-CMD -Zone=public - remove-port=80/tcp –permanent //ポートを閉じます
ファイアウォール-CMD –RELOAD //ファイアウォールを再起動します
2.1.4デフォルトのパスワード(弱いパスワード)変更
弱いパスワード攻撃を防ぐために、mysqlパスワードはデフォルトでルートです、phpstudyデフォルトパスワード123456
他のデフォルトのパスワード管理者、TOP100、TOP1000などがあります。
特に、WebアプリケーションPassWDユーザー名のバックグラウンドパスワードの変更//SSHパスワードの変更
mycms@localhost=password( '18ciweufhi28746')のパスワードを設定します。 //mysqlパスワードの変更
find/var/www/html -path '*config*' //構成ファイルでパスワード資格情報を見つける
2.1.5ローカルフラグを見つけます
GREP -R 'Flag'/var/www/html ///Linux:Webディレクトリでフラグを見つける
findstr /s /i 'flag' *
2.1.6 Ping無効の設定
echo '1'/proc/sys/net/ipv4/icmp_echo_ignore_all //一時的にping禁止を有効にします
echo '0'/proc/sys/net/ipv4/icmp_echo_ignore_all //ping禁止を閉じます
2.2#Webセキュリティ強化
2.2.1バックアップソースコード
ソースコードを変更する際の問題を防ぐ、または攻撃された当事者がソースコードを削除して準備する
圧縮ソースコード:
TAR -CVF Web.tar/var/www/html
zip -q -r web.zip/var/www/html
ソースコードを解凍します:
tar -xvf web.tar -c/var/www/html
unzip web.zip -d/var/www/html
バックアップソースコード:
MV web.tar /tmp
MV web.zip /home /xxx
ソースコードをアップロードしてダウンロードします:
scp username@servername:/path/filename/tmp/local_destination //サーバーからローカルに単一のファイルをダウンロード
scp/path/local_filename username@servername:/path //ローカルからサーバーへの単一のファイルから
scp -r username@servername:remote_dir//tmp/local_dir //ディレクトリ全体をサーバーからローカルにダウンロードする
scp -r /tmp /local_dir username@servername3360remote_dir //ディレクトリ全体をローカルからサーバーにアップロードします
2.2.2読み取り専用権限を設定
Webファイルの読み取り専用および実行権限を設定します(PHPなどの動的言語には実行権限が必要です)
chmod 0555/var/www/html/*
Chmod 0555 /var/www/html/*.php
Webルートディレクトリで読み取り専用および実行権限を設定します
Chmod 0555/var/www/html
ファイルの所有者とグループを変更して、厳密なアクセス許可を設定します
chown -r root:root/var/www/html///所有者をroot:rootまたはhttpd:httpd(推奨)として設定します
chown -r apache:apache/var/www/html///apacheが/var/www/htmlを持っていることを確認してください
2.2.3構成.htaccess
PHPファイルの実行を禁止するために.htaccess構成ファイルを使用します
ディレクトリ '/var/www/html/upload' //指定されたディレクトリの後続の指示がディレクトリに適用されます
Options -EXECCGI -INDEXES //CGI実行およびディレクトリインデックス(ディスプレイディレクトリコンテンツリスト)ディレクトリの関数は無効です。
AllowOverrideなし//.htaccessファイルを使用してこのディレクトリのサーバーの構成を上書きすることができません。
removehandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml
//これらの2つの命令指定されたファイル拡張子のプロセッサとタイプを削除します。
//この場合、これらのディレクティブは、Apacheの処理リストからPHP関連の拡張機能とサーバー側インクルージョン(SSI)ファイルタイプを削除します。
PHP_FLAGエンジンオフ//このディレクティブは、PHPエンジンフラグ(エンジン)をオフに設定するため、このディレクトリでPHPスクリプトを実行する機能を無効にします。
filesmatch '。+\。ph(p [3457]?| t | tml)$'
すべてから否定します
/filesmatch //これらの3行のコマンドは、正規表現を使用して、php、phpp、php3、pht、php4、php5、php7、shtmlで終了するファイルを一致させ、アクセス許可を設定してすべてを拒否します
/ディレクトリ
2.2.4 PHPパラメーターセキュリティ構成
最初にPHP構成ファイルを見つけます
/etc/php/{version }/php.ini
高リスク関数を無効にします
disable_functions=dl、exec、system、passthru、popen、proc_open、pcntl_exec、shell_exec、mail、imap_open、imap_mail、putenv、ini_set、apache_setenv、symlink、link
Open_basedirを構成します(指定された領域にユーザーアクセスファイルのアクティビティ範囲を制限します)
open_basedir=/var/www/html
魔法の引用を無効にする(SQL注入を防ぐために外部ソースデータを自動的に逃がす)
MAGIC_QUOTES_GPC=OFF
PHP擬似プロトコルを閉じます
Allow_url_fopen=off
Allow_url_include=off
PHPを再起動します
sudoサービスphp7.0-fpm再起動
sudo systemctl再起動php7.0-fpm.service
2.3#データベースセキュリティ補強
2.3.1 mysql補強
弱いパスワード攻撃を防ぐために、mysqlパスワードはデフォルトでルートです、phpstudyデフォルトのパスワード123456
デフォルトのパスワードを使用しないで、それを複雑に変更し、Web環境との接続を確認しないでください
設定ローカル127.0.0.1アカウントログインのみを許可します:bind-address=127.0.0.1を変更します。 secure_file_priv=nullを構成ファイルに追加します
ログ監査機能をオンにします:general_log_file=path
MySQLデータベースが最も一般的に使用されているため、基本的な攻撃と防御のほとんどはMySQLデータベースコマンドの使用に使用されます
指定されたデータベースをバックアップします:
mysqldump –u username –pパスワードdatabasename target.sql
すべてのデータベースをバックアップします:
mysqldump –All -database all.sql
データベースをインポートします。
mysql –u username –pパスワードデータベースfrom.sql
mysqlの攻撃と防御については、この記事を読むことができます:https://blog.zgsec.cn/archives/26.html
mysqlデフォルト構成ファイルパス:
c: \\プログラムファイル\ mysql \ mysqlserver 5.1 \ my.ini //windows
/etc/my.cnf //linux
/etc/mysql/my.cnf //linux
secure_file_privパラメーター(ログ関数の対応するディレクトリ)を変更する
secure_file_priv=''
MySQL構成を過負荷
フラッシュ特権
MySQLサービスを再起動します
sudoサービスmysql再起動
sudo systemctlはmysqlを再起動します
2.3.2 mssql補強
不要なアカウントを削除します
SQLServerユーザーパスワードセキュリティ
ユーザーによると、アカウント共有は避けてください
データベースユーザーに必要な最小許可を割り当てます
ネットワークアクセス制限
SQLServerログイン監査
SQLServerセキュリティインシデント監査
ロギング関数を構成します
2.4#リモートコントロール補強
2.4.1 SSH安全補強
IPログインを制限する方法
sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集
Allowusers username@192.168.0.100 //次の行を見つけて編集して、希望のIPアドレスに設定されていることを確認します
ルートリモートログインを無効にします
sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集
permitrootlogin no //permitrootlogiを「いいえ」に設定します
ユーザーとグループごとにSSHログインを制限します
sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集
Allowusers testuser //SET TestuserはSSHにログインできるようにします
Allowusers testuser@192.168.1.100 //セットでは、192.168.1.100マシンのみがTestuserアカウントでSSHにログインできます
Groups Testを許可//ユーザーグループホワイトリストを設定します
//AllowusersとAllowgroupが同時に指定されている場合、両方のオプションと一致するユーザーがSSHログインでなければならないことに注意する必要があります。
SSHサービスを再起動します
Sudo Service sshd Restart
Sudo SystemCtl Restart Sshd.Service
2.4.2 RDPリモートログインセキュリティ補強材
デフォルトのアカウントを削除し、新しいユーザーを手動で追加します。
ステップ1:Win + Rを押して[実行]ダイアログボックスを開き、secpol.mscを入力して[OK]をクリックします
ステップ2:これに移動します:ローカルポリシーユーザー許可割り当ての割り当て、次にダブルクリックして「リモートデスクトップサービスを介してログインを許可」を開きます
ステップ3:このウィンドウにリストされている管理者とリモートデスクトップユーザー(またはコンピューター上の他のユーザーまたはグループ)を削除する
ステップ4:その後、「ユーザーまたはグループの追加」をクリックし、リモートデスクトップアクセスを許可するユーザーを手動で追加します。
デフォルトのRDPポート番号を変更します:
ステップ1:[実行]ダイアログボックスを開き、Regeditを入力して[OK]をクリックします
ステップ2:hkey_local_machine \ system \ currentControlset \ control \ターミナルサーバー\ winstations \ rdp-tcpを開き、下にスクロールしてportnumberを見つけてダブルクリックします
ステップ3:「小数」を選択し、設定するポート番号を変更し、[OK]をクリックします。
2.5#緊急対応
2.5.1クエリプロセススレッド
Netstat
ps -aux
netstat -apt
2.5.2プロセスを殺します
Kill -9 PID //Linuxで
Windows上のtaskkill /f /pid pid //
2.5.3 WebShellファイルを検索
Find/var/www/html -name *.php -mmin -5 //過去5分間に変更されたファイルを表示
./-name '*.php' |を見つけますxargs wc -l | sort -u //最短の行のファイルを見つけます。これは一般的にトロイの木馬です
grep -r -include=*。php '[^a -z] eval($ _ post'/var/www/html //キーワードを含むphpファイルを確認する
find/var/www/html -type f -name '*.php' | xargs grep 'eval(' | more //Linuxシステムでは、Find、Grep、Xargsコマンドの組み合わせを使用して、指定されたディレクトリ(/var/www/html)で.php拡張機能を持つすべてのファイルを見つけ、文字列'' eval( '' inこれらのファイルで 'evalを検索し、結果をパージに表示したときの結果をpagineしているときにパージーのパージをpagingで実行します。
2.5.4馬を殺すためにチェック
コマンドを使用して自動的に検索して削除することもできます
ps -aux | grep www-data | grep -v grep | awk '{print $ 2}' | Xargs Kill -9
次に、サービスを再起動します
サービスPHP-FPM再起動
2.5.5リバウンドシェルを殺します
プロセスを表示する古いルール
PS -EF
Px -aux
ps -aux | grep www-data
www-data pormissions /bin /shはNCである可能性が高いことに注意してください
それから古い注文があります
ps -auxを殺す| grep www-data | grep apache2 | awk '{$ 2を印刷}'
3#無料攻撃(攻撃)
3.0#メインコンテンツ
さまざまなCMSソフトウェアパッケージの最新バージョンが準備されています
スキャンツール:NMAP、Nessus、Metasploitの更新
Scripts POC、Exp
3.1#基本情報コレクション
3.1.1ホスト情報コレクション
NMAP
NAMP -SN 192.168.0.0/24 //セグメントCサバイバルスキャン
httpscan
httpscan.py 192.168.0.0/24 –T 10 //Cセグメントサバイバルスキャン
3.1.2ポートスキャン
NMAP -SV 192.168.0.2 //ホストシステムバージョンをスキャンします
NMAP -SS 192.168.0.2 //ホストの一般的に使用されるポートをスキャン
NMAP -SS -P 80,445 192.168.0.2 //ポートのホスト部分をスキャン
NMAP -SS -P- 192.168.0.2 //ホストのすべてのポートをスキャン
Pythonスクリプト
リクエストをインポートします
範囲のxの場合(2,255):
url='http://192.168.1。{}'。フォーマット(x)
try:
r=requests.post(url)
印刷(url)
:を除く
合格
3.2#外部管理
3.2.0共通システムの脆弱性
MS17-010(Eternal Blue、https://Blog.zgsec.cn/archives/172.htmlを参照)
MySQLはUDFエスカレーション(SQLインジェクションまたはMySQL弱いパスワード)を実行します
MSSQLはシステムコマンド実行(SQLインジェクションまたはMSSQL弱いパスワード)を実行します
SSH弱いパスワードまたはデフォルトのパスワード
PWN(これはAWDコンペティションによって提供される特定のコンテンツに依存します)
3.2.1ミドルウェアの脆弱性
IIS(脆弱性の解決、リモートコードの実行)
Apache(脆弱性を解析)
nginx(脆弱性の解析)
JBoss(CVE-2017-7504/CVE-2017-12149/CVE-2015-7501)
mysql(弱いパスワード)
Tomcat(弱いパスワードのGetShell)
WebLogic(CVE-2020-2551/CVE-2020-2555/CVE-2020-2883)
Springboot(不正アクセスの脆弱性とRCEの脆弱性、https://Blog.zgsec.cn/archives/129.htmlを参照してください)
3.2.2統合サービス環境における脆弱性
WampServer
XampServer
3.2.3 cmsの脆弱性エクスプロイト
CMSの最新バージョンと、対応する脆弱性POCとEXPを収集します。ここでは、CMSの一部のみがリストされています。
ASPCMS
DEDECMS
dicuz
Drupal
empirecms
eshop
FINECMS
Joomla
ランプ
Metainfo
phpcms
phpwind
qibocms
SEACM
semcms
thinkphp
wolfcms
WordPress
Zabbix
バックアップファイルブラスト:7kbscanなどのディレクトリスキャンツールを使用して、Webシステムを爆破する
3.2.4 WebShellのアップロード
トロイの木馬についての一般的なことわざ
php:php @eval($ _ post ['pass']);php eval($ _ get ['pass']);
ASP:%eval request( 'pass')%
aspx:%@ page言語='jscript
Recommended Comments