Skip to content

Commit 734ed09

Browse files
committed
Fix a bunch of stuff.
1 parent a5f207a commit 734ed09

File tree

7 files changed

+30
-24
lines changed

7 files changed

+30
-24
lines changed

bin/install.sh

+8-5
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ pip install flask sqlalchemy Flask-SQLAlchemy MySQL-python selenium \
8383

8484
# Setup users and groups
8585
groupadd -f pwnableweb
86+
usermod -a -G pwnableweb www-data
8687
useradd -g pwnableweb -d $DESTDIR/pwncart -s /bin/nologin -M pwncart || \
8788
getent passwd pwncart
8889
useradd -g pwnableweb -d $DESTDIR/pwntalk -s /bin/nologin -M pwntalk || \
@@ -135,8 +136,8 @@ chown -R pwntalk $DESTDIR/pwntalk
135136
chown -R sandbox $DESTDIR/sandbox
136137
$SCOREBOARD && chown -R scoreboard $DESTDIR/scoreboard
137138
chmod -R ug-w,o-rwx $DESTDIR
138-
chmod -R u-w,go-rwx $DESTDIR/pwncart
139-
chmod -R u-w,go-rwx $DESTDIR/pwntalk
139+
chmod -R u-w,g-rw,o-rwx $DESTDIR/{pwncart,pwntalk}
140+
chmod -R g+rX $DESTDIR/{pwncart,pwntalk}/static
140141
chmod -R ug-w,o-rwx $DESTDIR/sandbox
141142
chmod 4550 $DESTDIR/sandbox/cmdwrapper
142143
$SCOREBOARD && chmod -R u-w,go-rwx $DESTDIR/scoreboard
@@ -161,18 +162,18 @@ function start() {
161162
-w 4 -D -u pwncart -g pwnableweb -p /var/run/pwnableweb/pwncart.pid \
162163
--access-logfile $DESTDIR/logs/pwncart.access.log \
163164
--error-logfile $DESTDIR/logs/pwncart.error.log \
164-
-m 002 pwncart.app:app
165+
-m 007 pwncart.app:app
165166
bin/gunicorn -b 'unix:/var/run/pwnableweb/pwntalk.sock' \
166167
-w 4 -D -u pwntalk -g pwnableweb -p /var/run/pwnableweb/pwntalk.pid \
167168
--access-logfile $DESTDIR/logs/pwntalk.access.log \
168169
--error-logfile $DESTDIR/logs/pwntalk.error.log \
169-
-m 002 pwntalk.app:app
170+
-m 007 pwntalk.app:app
170171
if $SCOREBOARD ; then
171172
bin/gunicorn -b 'unix:/var/run/pwnableweb/scoreboard.sock' \
172173
-w 4 -D -u scoreboard -g pwnableweb -p /var/run/pwnableweb/scoreboard.pid \
173174
--access-logfile $DESTDIR/logs/scoreboard.access.log \
174175
--error-logfile $DESTDIR/logs/scoreboard.error.log \
175-
-m 002 scoreboard.app:app
176+
-m 007 scoreboard.app:app
176177
fi
177178
# Start clients
178179
python $DESTDIR/pwntalk/client.py >$DESTDIR/logs/pwntalk.client.log 2>&1 &
@@ -214,6 +215,8 @@ chmod 700 /etc/init.d/pwnableweb
214215
update-rc.d pwnableweb defaults
215216

216217
# Nginx setup
218+
sed -i -r 's/^(\s*user\s+[A-Za-z0-9-]+).*$/\1 pwnableweb;/' \
219+
/etc/nginx/nginx.conf
217220
cp -n etc/pwnableweb.nginx.conf /etc/nginx/sites-enabled/pwnableweb.conf
218221
sed -i -e "s|\\\$DOMAIN|$DOMAIN|g" -e "s|\\\$DESTDIR|$DESTDIR|g" \
219222
/etc/nginx/sites-enabled/pwnableweb.conf

etc/pwnableweb.nginx.conf

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
upstream pwncart_gunicorn {
2-
server unix:/var/run/pwnableweb/pwncart.sock;
3-
}
4-
51
server {
62
listen 80;
73
server_name pwncart.$DOMAIN;
@@ -17,14 +13,10 @@ server {
1713
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
1814
proxy_set_header Host $http_host;
1915
proxy_redirect off;
20-
proxy_pass http://pwncart_gunicorn;
16+
proxy_pass http://unix:/var/run/pwnableweb/pwncart.sock;
2117
}
2218
}
2319

24-
upstream pwntalk_gunicorn {
25-
server unix:/var/run/pwnableweb/pwntalk.sock;
26-
}
27-
2820
server {
2921
listen 80;
3022
server_name pwntalk.$DOMAIN;
@@ -40,6 +32,6 @@ server {
4032
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
4133
proxy_set_header Host $http_host;
4234
proxy_redirect off;
43-
proxy_pass http://pwntalk_gunicorn;
35+
proxy_pass http://unix:/var/run/pwnableweb/pwntalk.sock;
4436
}
4537
}

etc/scoreboard.nginx.conf

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
upstream scoreboard_gunicorn {
2-
server unix:/var/run/pwnableweb/scoreboard.sock;
3-
}
4-
51
server {
62
listen 80;
73
server_name scoreboard.$DOMAIN;
@@ -17,6 +13,6 @@ server {
1713
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
1814
proxy_set_header Host $http_host;
1915
proxy_redirect off;
20-
proxy_pass http://scoreboard_gunicorn;
16+
proxy_pass http://unix:/var/run/pwnableweb/scoreboard.sock;
2117
}
2218
}

pwnableapp/__init__.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import logging
2+
import flask
3+
4+
class Flask(flask.Flask):
5+
6+
def init_logging(self):
7+
"""Must be called after config setup."""
8+
if not self.debug:
9+
handler = logging.FileHandler(
10+
self.config.get('LOG_FILE', '/tmp/flask.log'))
11+
handler.setFormatter(
12+
'%(asctime)s %(levelname)8s [%(filename)s:%(lineno)d] %(message)s')
13+
handler.setLevel(logging.INFO)
14+
self.logger.addHandler(handler)

pwnableapp/app.py

Whitespace-only changes.

pwncart/app.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import flask
1+
import pwnableapp
22
import hashlib
33

44

5-
app = flask.Flask(__name__)
5+
app = pwnableapp.Flask('pwncart')
66
app.config.from_object('pwncart.config')
7+
app.init_logging()
78

89
# CTF Flags
910
flags = {

pwntalk/app.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import flask
21
import hashlib
2+
import pwnableapp
33

44

5-
app = flask.Flask(__name__)
5+
app = pwnableapp.Flask('pwntalk')
66
app.config.from_object('pwntalk.config')
77

88
# CTF Flags

0 commit comments

Comments
 (0)